Compare commits
132 Commits
1efdf66c19
...
v25.5.24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84d8363383 | ||
|
|
3830b00c33 | ||
|
|
84103bb8ed | ||
|
|
0d7202f7a2 | ||
|
|
a1f4f9b92f | ||
|
|
82410814de | ||
|
|
98cf0a4bc0 | ||
|
|
5efc9dcb16 | ||
|
|
cfa7fb47e4 | ||
|
|
29d677253e | ||
|
|
210a5e9ae2 | ||
|
|
49465715a6 | ||
|
|
a0a14f24cc | ||
|
|
209d06421c | ||
|
|
cac2af8422 | ||
|
|
57a9b269a0 | ||
|
|
17b11a016c | ||
|
|
d05de62cc7 | ||
|
|
3c28f9ed36 | ||
|
|
56bd1d2772 | ||
|
|
7e65b06ff2 | ||
|
|
78cb68d2c4 | ||
|
|
f8df8dc41a | ||
|
|
4199f8891c | ||
|
|
7aa5f499b9 | ||
|
|
990f490fb3 | ||
|
|
7dba186e39 | ||
|
|
7443c52021 | ||
|
|
03822ac8fa | ||
|
|
01f7a18dce | ||
|
|
a392803478 | ||
|
|
c9ef1b1bce | ||
|
|
87eda72a62 | ||
|
|
984bc58cf2 | ||
|
|
4d7a55e4f6 | ||
|
|
79d67d1cbe | ||
|
|
0bc93a2352 | ||
|
|
27443c441a | ||
|
|
7894b08051 | ||
|
|
31089e2aa6 | ||
|
|
46cbf85584 | ||
|
|
9d3a537b10 | ||
|
|
a3fcd4373f | ||
|
|
fb8876df0d | ||
|
|
8b617ffb8d | ||
|
|
55fa24bced | ||
|
|
b1cfaac33b | ||
|
|
476dd67796 | ||
|
|
f52ae328bc | ||
|
|
cbf626a5b6 | ||
|
|
4bb87fe8df | ||
|
|
71bcbbe7f9 | ||
|
|
f941133304 | ||
|
|
470997fcde | ||
|
|
d6b2ac587f | ||
|
|
e6962e0393 | ||
|
|
426dd48540 | ||
|
|
7da11d167d | ||
|
|
40e090c5c6 | ||
|
|
3ccb165658 | ||
|
|
a12da278c6 | ||
|
|
ffb0d0238d | ||
|
|
599603d9ff | ||
|
|
befb58619b | ||
|
|
f83cdc766b | ||
|
|
6fb1547fc4 | ||
|
|
ea9a07d29e | ||
|
|
2889be28e4 | ||
|
|
46a8bb66e7 | ||
|
|
578a6d0d48 | ||
|
|
e1f9ca05b7 | ||
|
|
4aaf86f0fc | ||
|
|
9bb21ad303 | ||
|
|
e1197eb3f8 | ||
|
|
2c445ccaeb | ||
|
|
8a07f7067b | ||
|
|
d86c2a5023 | ||
|
|
2b51674e52 | ||
|
|
eb6820dd93 | ||
|
|
b156246cb0 | ||
|
|
716c6a4046 | ||
|
|
114b5a2621 | ||
|
|
02b19c833e | ||
|
|
e0c06548ba | ||
|
|
4d401f60dc | ||
|
|
391be9a49d | ||
|
|
587fb6036c | ||
|
|
2d4ca7e8ae | ||
|
|
3f74173245 | ||
|
|
e35a3578dd | ||
|
|
e957453d33 | ||
|
|
3c31a85a68 | ||
|
|
7054c44976 | ||
|
|
0110675806 | ||
|
|
a4ecd7f571 | ||
|
|
b671abd93f | ||
|
|
67db3c1582 | ||
|
|
f25d6c18e5 | ||
|
|
e5f7698461 | ||
|
|
371e996a25 | ||
|
|
20342ed0b5 | ||
|
|
5d01af1758 | ||
|
|
a0561b2016 | ||
|
|
f2e218230e | ||
|
|
e25c471626 | ||
|
|
76419db0e3 | ||
|
|
929964f9e2 | ||
|
|
7e5373b2cd | ||
|
|
3b869f5365 | ||
|
|
e996c9eccc | ||
|
|
393904c91f | ||
|
|
8d9a4d23d1 | ||
|
|
4092452363 | ||
|
|
2b61665ee8 | ||
|
|
6c28926e39 | ||
|
|
af4beb9f58 | ||
|
|
e55c561e55 | ||
|
|
0d4185731c | ||
|
|
0b6de5545b | ||
|
|
9d04f943bc | ||
|
|
038a6a63eb | ||
|
|
6f8b2f5071 | ||
|
|
fd9695c743 | ||
|
|
ba300f7023 | ||
|
|
92fce6f14a | ||
|
|
fe722a5caa | ||
|
|
0512ddd143 | ||
|
|
1aaa22c178 | ||
|
|
60a1349be5 | ||
|
|
b99f949363 | ||
|
|
8de6749ce3 | ||
|
|
95345518a1 |
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,6 +1,6 @@
|
||||
name: Feature Request
|
||||
description: 'Suggest an idea for NetAlertX'
|
||||
labels: ['Feature request➕']
|
||||
labels: ['Feature request ➕']
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
|
||||
3
.github/ISSUE_TEMPLATE/i-have-an-issue.yml
vendored
@@ -59,12 +59,15 @@ body:
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: installation_type
|
||||
attributes:
|
||||
label: What installation are you running?
|
||||
options:
|
||||
- Production (netalertx)
|
||||
- Dev (netalertx-dev)
|
||||
- Home Assistant (addon)
|
||||
- Home Assistant fa (full-access addon)
|
||||
- Bare-metal (community only support - Check Discord)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
3
.github/ISSUE_TEMPLATE/setup-help.yml
vendored
@@ -44,12 +44,15 @@ body:
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: installation_type
|
||||
attributes:
|
||||
label: What installation are you running?
|
||||
options:
|
||||
- Production (netalertx)
|
||||
- Dev (netalertx-dev)
|
||||
- Home Assistant (addon)
|
||||
- Home Assistant fa (full-access addon)
|
||||
- Bare-metal (community only support - Check Discord)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
2
.github/tweet.md
vendored
Executable file
@@ -0,0 +1,2 @@
|
||||
🎉 New release: ** v25.4.14 - Styling, Workflows and other fixes ** is live! 🚀
|
||||
Check it out here: https://github.com/jokob-sk/NetAlertX/releases/tag/v25.4.14
|
||||
33
.github/workflows/code_checks.yml
vendored
Executable file
@@ -0,0 +1,33 @@
|
||||
name: Code checks
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
tags:
|
||||
- '*.*.*'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
check-url-paths:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Check for absolute path URLs
|
||||
run: |
|
||||
if grep -r -E "\burl:\s*['\"]\/php" --include=\*.{js,php} .; then
|
||||
echo "❌ Found absolute path URLs starting with '/php/'. Please use relative paths."
|
||||
exit 1
|
||||
else
|
||||
echo "✅ No absolute path URLs found."
|
||||
fi
|
||||
- name: Check Python syntax
|
||||
run: |
|
||||
set -e
|
||||
echo "🔍 Checking Python syntax..."
|
||||
find . -name "*.py" -print0 | xargs -0 -n1 python3 -m py_compile
|
||||
|
||||
43
.github/workflows/label-issues.yml
vendored
Executable file
@@ -0,0 +1,43 @@
|
||||
name: Label Issues by Installation Type
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
add-label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get issue content
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const body = context.payload.issue.body;
|
||||
|
||||
const lowerBody = body.toLowerCase();
|
||||
|
||||
let labelsToAdd = [];
|
||||
|
||||
if (lowerBody.includes('bare-metal')) {
|
||||
labelsToAdd.push('bare-metal ❗');
|
||||
}
|
||||
|
||||
if (lowerBody.includes('home assistant')) {
|
||||
labelsToAdd.push('Home Assistant 🏠');
|
||||
}
|
||||
|
||||
if (lowerBody.includes('production (netalertx)') || lowerBody.includes('dev (netalertx-dev)')) {
|
||||
labelsToAdd.push('Docker 🐋');
|
||||
}
|
||||
|
||||
if (labelsToAdd.length > 0) {
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.issue.number,
|
||||
labels: labelsToAdd
|
||||
});
|
||||
}
|
||||
@@ -13,7 +13,7 @@ ENV PATH="/opt/venv/bin:$PATH"
|
||||
|
||||
COPY . ${INSTALL_DIR}/
|
||||
|
||||
RUN pip install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask tplink-omada-client wakeonlan 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 \
|
||||
RUN pip install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag git+https://github.com/foreign-sub/aiofreepybox.git \
|
||||
&& bash -c "find ${INSTALL_DIR} -type d -exec chmod 750 {} \;" \
|
||||
&& bash -c "find ${INSTALL_DIR} -type f -exec chmod 640 {} \;" \
|
||||
&& bash -c "find ${INSTALL_DIR} -type f \( -name '*.sh' -o -name '*.py' -o -name 'speedtest-cli' \) -exec chmod 750 {} \;"
|
||||
|
||||
@@ -43,7 +43,7 @@ RUN phpenmod -v 8.2 sqlite3
|
||||
RUN apt-get install -y python3-venv
|
||||
RUN python3 -m venv myenv
|
||||
|
||||
RUN /bin/bash -c "source myenv/bin/activate && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 && pip3 install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros "
|
||||
RUN /bin/bash -c "source myenv/bin/activate && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 && pip3 install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag "
|
||||
|
||||
# Create a buildtimestamp.txt to later check if a new version was released
|
||||
RUN date +%s > ${INSTALL_DIR}/front/buildtimestamp.txt
|
||||
|
||||
@@ -41,6 +41,10 @@ Send notifications to more than 80+ services, including Telegram via [Apprise](h
|
||||
Feed your data and device changes into [Home Assistant](https://github.com/jokob-sk/NetAlertX/blob/main/docs/HOME_ASSISTANT.md), read [API endpoints](https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md), or use [Webhooks](https://github.com/jokob-sk/NetAlertX/blob/main/docs/WEBHOOK_N8N.md) to setup custom automation flows. You can also
|
||||
build your own scanners with the [Plugin system](https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md#readme) in as little as [15 minutes](https://www.youtube.com/watch?v=cdbxlwiWhv8).
|
||||
|
||||
### Workflows
|
||||
|
||||
The [workflows module](https://github.com/jokob-sk/NetAlertX/blob/main/docs/WORKFLOWS.md) allows to automate repetitive tasks, making network management more efficient. Whether you need to assign newly discovered devices to a specific Network Node, auto-group devices from a given vendor, unarchive a device if detected online, or automatically delete devices, this module provides the flexibility to tailor the automations to your needs.
|
||||
|
||||
|
||||
## 📚 Documentation
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
DISCOVER_PLUGINS=True
|
||||
SCAN_SUBNETS=['192.168.1.0/24 --interface=eth0']
|
||||
TIMEZONE='Europe/Berlin'
|
||||
LOADED_PLUGINS = ['ARPSCAN','CSVBCKP','DBCLNP', 'INTRNT','MAINT','NEWDEV','NSLOOKUP','NTFPRCS', 'AVAHISCAN', 'SETPWD','SMTP', 'SYNC', 'VNDRPDT', 'WORKFLOWS', 'UI']
|
||||
LOADED_PLUGINS=['ARPSCAN','CSVBCKP','DBCLNP', 'INTRNT','MAINT','NEWDEV','NSLOOKUP','NTFPRCS', 'AVAHISCAN', 'SETPWD','SMTP', 'SYNC', 'VNDRPDT', 'WORKFLOWS', 'UI']
|
||||
|
||||
DAYS_TO_KEEP_EVENTS=90
|
||||
# Used for generating links in emails. Make sure not to add a trailing slash!
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "Sample Device Update Workflow",
|
||||
"trigger": {
|
||||
"object_type": "Devices",
|
||||
"event_type": "update"
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"logic": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "devVendor",
|
||||
"operator": "contains",
|
||||
"value": "Google"
|
||||
},
|
||||
{
|
||||
"field": "devIsNew",
|
||||
"operator": "equals",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"logic": "OR",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "devIsNew",
|
||||
"operator": "equals",
|
||||
"value": "1"
|
||||
},
|
||||
{
|
||||
"field": "devName",
|
||||
"operator": "contains",
|
||||
"value": "Google"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"type": "update_field",
|
||||
"field": "devIsNew",
|
||||
"value": "0"
|
||||
},
|
||||
{
|
||||
"type": "run_plugin",
|
||||
"plugin": "SMTP",
|
||||
"params": {
|
||||
"message": "New device from Google detected."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Sample Plugin Object Workflow",
|
||||
"trigger": {
|
||||
"object_type": "Plugins_Objects",
|
||||
"event_type": "create"
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"logic": "AND",
|
||||
"conditions": [
|
||||
{
|
||||
"field": "Plugin",
|
||||
"operator": "equals",
|
||||
"value": "ARPSCAN"
|
||||
},
|
||||
{
|
||||
"field": "Status",
|
||||
"operator": "equals",
|
||||
"value": "missing-in-last-scan"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -37,7 +37,6 @@ export INSTALL_DIR=/app # Specify the installation directory here
|
||||
# DO NOT CHANGE ANYTHING BELOW THIS LINE!
|
||||
|
||||
CONF_FILE="app.conf"
|
||||
WF_FILE="workflows.json"
|
||||
NGINX_CONF_FILE=netalertx.conf
|
||||
DB_FILE="app.db"
|
||||
FULL_FILEDB_PATH="${INSTALL_DIR}/db/${DB_FILE}"
|
||||
@@ -97,9 +96,8 @@ fi
|
||||
|
||||
echo "[INSTALL] Copy starter ${DB_FILE} and ${CONF_FILE} if they don't exist"
|
||||
|
||||
# Copy starter app.db, app.conf, workflows.json if they don't exist
|
||||
# Copy starter app.db, app.conf if they don't exist
|
||||
cp -na "${INSTALL_DIR}/back/${CONF_FILE}" "${INSTALL_DIR}/config/${CONF_FILE}"
|
||||
cp -na "${INSTALL_DIR}/back/${WF_FILE}" "${INSTALL_DIR}/config/${WF_FILE}"
|
||||
cp -na "${INSTALL_DIR}/back/${DB_FILE}" "${FULL_FILEDB_PATH}"
|
||||
|
||||
# if custom variables not set we do not need to do anything
|
||||
|
||||
@@ -4,20 +4,21 @@
|
||||
> To backup 99% of your configuration backup at least the `/app/config` folder. Please read the whole page (or at least "Scenario 2: Corrupted database") for details.
|
||||
> Note that database definitions might change over time. The safest way is to restore your older backups into the **same version** of the app they were taken from and then gradually upgarde between releases to the latest version.
|
||||
|
||||
There are 3 artifacts that can be used to backup the application:
|
||||
There are 4 artifacts that can be used to backup the application:
|
||||
|
||||
| File | Description | Limitations |
|
||||
|-----------------------|-------------------------------|-------------------------------|
|
||||
| `/db/app.db` | Database file(s) | The database file might be in an uncommitted state or corrupted |
|
||||
| `/config/app.conf` | Configuration file | Can be overridden with the [`APP_CONF_OVERRIDE` env variable](https://github.com/jokob-sk/NetAlertX/tree/main/dockerfiles#docker-environment-variables). |
|
||||
| `/config/devices.csv` | CSV file containing device information | Doesn't contain historical data |
|
||||
| `/config/workflows.json` | A JSON file containing your workflows | N/A |
|
||||
|
||||
|
||||
## Backup strategies
|
||||
|
||||
The safest approach to backups is to backup everything, by taking regular file system backups (I use [Kopia](https://github.com/kopia/kopia)).
|
||||
The safest approach to backups is to backup everything, by taking regular file system backups of the `/db` and `/config` folders (I use [Kopia](https://github.com/kopia/kopia)).
|
||||
|
||||
Arguably, the most time is spent setting up the device list, so if only one file is kept I'd recommend to have a latest backup of the `devices_<timestamp>.csv` or `devices.csv` file, followed by the `app.conf` file. You can also download `app.conf` and `devices.csv` file in the Maintenance section:
|
||||
Arguably, the most time is spent setting up the device list, so if only one file is kept I'd recommend to have a latest backup of the `devices_<timestamp>.csv` or `devices.csv` file, followed by the `app.conf` and `workflows.json` files. You can also download `app.conf` and `devices.csv` file in the Maintenance section:
|
||||
|
||||

|
||||
|
||||
@@ -29,6 +30,7 @@ End-result: Full restore
|
||||
|
||||
- `/app/db/app.db` (uncorrupted)
|
||||
- `/app/config/app.conf`
|
||||
- `/app/config/workflows.json`
|
||||
|
||||
#### 📥 Recovery:
|
||||
|
||||
@@ -43,12 +45,13 @@ End-result: Partial restore (historical data and some plugin data will be missin
|
||||
|
||||
- `/app/config/app.conf`
|
||||
- `/app/config/devices_<timestamp>.csv` or `/app/config/devices.csv`
|
||||
- `/app/config/workflows.json`
|
||||
|
||||
#### 📥 Recovery:
|
||||
|
||||
Even with a corrupted database you can recover what I would argue is 99% of the configuration.
|
||||
|
||||
- upload the `app.conf` file into the mounted `/app/config/` folder as described in the [Setup documentation](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md#docker-paths).
|
||||
- upload the `app.conf` and `workflows.json` files into the mounted `/app/config/` folder as described in the [Setup documentation](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md#docker-paths).
|
||||
- rename the `devices_<timestamp>.csv` to `devices.csv` and place it in the `/app/config` folder
|
||||
- Restore the `devices.csv` backup via the [Maintenance section](./DEVICES_BULK_EDITING.md)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
This functionality allows you to define **custom properties** for devices, which can store and display additional information on the device listing page. By marking properties as visible, you can enhance the user interface with quick actions, notes, or external links.
|
||||
This functionality allows you to define **custom properties** for devices, which can store and display additional information on the device listing page. By marking properties as "Show", you can enhance the user interface with quick actions, notes, or external links.
|
||||
|
||||
### Key Features:
|
||||
- **Customizable Properties**: Define specific properties for each device.
|
||||
@@ -63,10 +63,10 @@ Visible properties (`CUSTPROP_show: true`) are displayed as interactive icons in
|
||||
|
||||
---
|
||||
|
||||
## Example Scenarios
|
||||
## Example Use Cases
|
||||
|
||||
1. **Device Documentation Link**:
|
||||
- Add a custom property with `CUSTPROP_type` set to `link` or `link_new_tab` to allow quick navigation to the documentation.
|
||||
- Add a custom property with `CUSTPROP_type` set to `link` or `link_new_tab` to allow quick navigation to the external documentation of the device.
|
||||
|
||||
2. **Firmware Details**:
|
||||
- Use `CUSTPROP_type: show_notes` to display firmware versions or upgrade instructions in a modal.
|
||||
|
||||
@@ -1,11 +1,53 @@
|
||||
|
||||
# A high-level description of the database structure
|
||||
|
||||
⚠ Disclaimer: As I'm not the original author, some of the information might be inaccurate. Feel free to submit a PR to correct anything within this page or documentation in general.
|
||||
An overview of the most important database tables as well as an detailed overview of the Devices table. The MAC address is used as a foreign key in most cases.
|
||||
|
||||
The MAC address is used as a foreign key in most cases.
|
||||
## Devices database table
|
||||
|
||||
## 🔍Tables overview
|
||||
| Field Name | Description | Sample Value |
|
||||
|-------------------------|-------------|--------------|
|
||||
| `devMac` | MAC address of the device. | `00:1A:2B:3C:4D:5E` |
|
||||
| `devName` | Name of the device. | `iPhone 12` |
|
||||
| `devOwner` | Owner of the device. | `John Doe` |
|
||||
| `devType` | Type of the device (e.g., phone, laptop, etc.). If set to a network type (e.g., switch), it will become selectable as a Network Parent Node. | `Laptop` |
|
||||
| `devVendor` | Vendor/manufacturer of the device. | `Apple` |
|
||||
| `devFavorite` | Whether the device is marked as a favorite. | `1` |
|
||||
| `devGroup` | Group the device belongs to. | `Home Devices` |
|
||||
| `devComments` | User comments or notes about the device. | `Used for work purposes` |
|
||||
| `devFirstConnection` | Timestamp of the device's first connection. | `2025-03-22 12:07:26+11:00` |
|
||||
| `devLastConnection` | Timestamp of the device's last connection. | `2025-03-22 12:07:26+11:00` |
|
||||
| `devLastIP` | Last known IP address of the device. | `192.168.1.5` |
|
||||
| `devStaticIP` | Whether the device has a static IP address. | `0` |
|
||||
| `devScan` | Whether the device should be scanned. | `1` |
|
||||
| `devLogEvents` | Whether events related to the device should be logged. | `0` |
|
||||
| `devAlertEvents` | Whether alerts should be generated for events. | `1` |
|
||||
| `devAlertDown` | Whether an alert should be sent when the device goes down. | `0` |
|
||||
| `devSkipRepeated` | Whether to skip repeated alerts for this device. | `1` |
|
||||
| `devLastNotification` | Timestamp of the last notification sent for this device. | `2025-03-22 12:07:26+11:00` |
|
||||
| `devPresentLastScan` | Whether the device was present during the last scan. | `1` |
|
||||
| `devIsNew` | Whether the device is marked as new. | `0` |
|
||||
| `devLocation` | Physical or logical location of the device. | `Living Room` |
|
||||
| `devIsArchived` | Whether the device is archived. | `0` |
|
||||
| `devParentMAC` | MAC address of the parent device (if applicable) to build the [Network Tree](./NETWORK_TREE.md). | `00:1A:2B:3C:4D:5F` |
|
||||
| `devParentPort` | Port of the parent device to which this device is connected. | `Port 3` |
|
||||
| `devIcon` | [Icon](./ICONS.md) representing the device. The value is a base64-encoded SVG or Font Awesome HTML tag. | `PHN2ZyB...` |
|
||||
| `devGUID` | Unique identifier for the device. | `a2f4b5d6-7a8c-9d10-11e1-f12345678901` |
|
||||
| `devSite` | Site or location where the device is registered. | `Office` |
|
||||
| `devSSID` | SSID of the Wi-Fi network the device is connected to. | `HomeNetwork` |
|
||||
| `devSyncHubNode` | The NetAlertX node ID used for synchronization between NetAlertX instances. | `node_1` |
|
||||
| `devSourcePlugin` | Source plugin that discovered the device. | `ARPSCAN` |
|
||||
| `devCustomProps` | [Custom properties](./CUSTOM_PROPERTIES.md) related to the device. The value is a base64-encoded JSON object. | `PHN2ZyB...` |
|
||||
|
||||
|
||||
To understand how values of these fields influuence application behavior, such as Notifications or Network topology, see also:
|
||||
|
||||
- [Device Management](./DEVICE_MANAGEMENT.md)
|
||||
- [Network Tree Topology Setup](./NETWORK_TREE.md)
|
||||
- [Notifications](./NOTIFICATIONS.md)
|
||||
|
||||
|
||||
## Other Tables overview
|
||||
|
||||
| Table name | Description | Sample data |
|
||||
|----------------------|----------------------| ----------------------|
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## High-level overview
|
||||
|
||||
If a Plugin supplies data to the main app it's doine either vie a SQL query or via a script that updates the `last_result.log` file in the plugin folder (`front/plugins/<plugin>`).
|
||||
If a Plugin supplies data to the main app it's done either vie a SQL query or via a script that updates the `last_result.log` file in the plugin log folder (`app/log/plugins/`).
|
||||
|
||||
For a more in-depth overview on how plugins work check the [Plugins development docs](https://github.com/jokob-sk/NetAlertX/blob/main/docs/PLUGINS.md).
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ You can select devices in the _Devices_ view by selecting devices to edit and th
|
||||
|
||||
## CSV bulk edit
|
||||
|
||||
The database and device structure may change with new releases. When using the CSV import functionality, ensure the format matches what the application expects. To avoid issues, you can first export the devices and review the column formats before importing any custom data.
|
||||
|
||||
> [!NOTE]
|
||||
> As always, backup everything, just in case.
|
||||
|
||||
|
||||
@@ -3,4 +3,13 @@
|
||||
This set of settings allows you to group Devices under different views. The Archived toggle allows you to exclude a Device from most listings and notifications.
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## Status Colors
|
||||
|
||||

|
||||
|
||||
1. Online (Green) = A device that is no longer marked as a "New Device"
|
||||
2. New (Green) = A newly discovered device that is online and is still "ticked" as a "New Device"
|
||||
3. New (Grey) = Same as No.2 but device is now offline.
|
||||
|
||||
@@ -1,35 +1,38 @@
|
||||
## Development environment set up
|
||||
# Development environment set up
|
||||
|
||||
>[!NOTE]
|
||||
> Replace `/development` with the path where your code files will be stored. The default container name is `netalertx` so there might be a conflict with your running containers.
|
||||
|
||||
### Development Guidelines
|
||||
## Development Guidelines
|
||||
|
||||
**Priority Order (Highest to Lowest):**
|
||||
Before starting development, please scan the below development guidelines.
|
||||
|
||||
### Priority Order (Highest to Lowest)
|
||||
|
||||
1. 🔼 Fixing core bugs that lack workarounds.
|
||||
2. 🔵 Adding core functionality that unlocks other features (e.g., plugins).
|
||||
3. 🔵 Refactoring to enable faster development.
|
||||
4. 🔽 UI improvements (PRs welcome).
|
||||
|
||||
💡 **Design Philosophy:**
|
||||
### Design Philosophy
|
||||
|
||||
Focus on core functionality and integrate with existing tools rather than reinventing the wheel.
|
||||
Examples:
|
||||
|
||||
- Using **Apprise** for notifications instead of implementing multiple separate gateways.
|
||||
- Implementing **regex-based validation** instead of one-off validation for each setting.
|
||||
|
||||
📌 **Note on UI requests:**
|
||||
> [!NOTE]
|
||||
> UI changes have lower priority, however, PRs are welcome, but **keep them small & focused**.
|
||||
|
||||
- UI changes have lower priority due to framework limitations and mobile support constraints.
|
||||
- PRs are welcome, but **keep them small & focused**.
|
||||
## Development Environment Set Up
|
||||
|
||||
## 1. Download the code:
|
||||
### 1. Download the code:
|
||||
|
||||
- `mkdir /development`
|
||||
- `cd /development && git clone https://github.com/jokob-sk/NetAlertX.git`
|
||||
|
||||
## 2. Create a DEV .env_dev file
|
||||
### 2. Create a DEV .env_dev file
|
||||
|
||||
`touch /development/.env_dev && sudo nano /development/.env_dev`
|
||||
|
||||
@@ -43,10 +46,12 @@ TZ=Europe/Berlin
|
||||
PORT=22222 # make sure this port is unique on your whole network
|
||||
DEV_LOCATION=/development/NetAlertX
|
||||
APP_DATA_LOCATION=/volume/docker_appdata
|
||||
# Make sure your GRAPHQL_PORT setting has a port that is unique on your whole host network
|
||||
APP_CONF_OVERRIDE={"GRAPHQL_PORT":"22223"}
|
||||
# ALWAYS_FRESH_INSTALL=true # uncommenting this will always delete the content of /config and /db dirs on boot to simulate a fresh install
|
||||
```
|
||||
|
||||
## 3. Create /db and /config dirs
|
||||
### 3. Create /db and /config dirs
|
||||
|
||||
Create a folder `netalertx` in the `APP_DATA_LOCATION` (in this example in `/volume/docker_appdata`) with 2 subfolders `db` and `config`.
|
||||
|
||||
@@ -54,7 +59,7 @@ Create a folder `netalertx` in the `APP_DATA_LOCATION` (in this example in `/vol
|
||||
- `mkdir /volume/docker_appdata/netalertx/db`
|
||||
- `mkdir /volume/docker_appdata/netalertx/config`
|
||||
|
||||
## 4. Run the container
|
||||
### 4. Run the container
|
||||
|
||||
- `cd /development/NetAlertX && sudo docker-compose --env-file ../.env_dev `
|
||||
|
||||
@@ -63,7 +68,7 @@ You can then modify the python script without restarting/rebuilding the containe
|
||||

|
||||
|
||||
|
||||
## 💡 Tips
|
||||
## Tips
|
||||
|
||||
A quick cheat sheet of useful commands.
|
||||
|
||||
@@ -75,9 +80,9 @@ A command to stop, remove the container and the image (replace `netalertx` and `
|
||||
|
||||
### Restart the server backend
|
||||
|
||||
Most code changes can be tetsed without rebuilding the container. When working on the python server backend, you only need to restart the server.
|
||||
Most code changes can be tested without rebuilding the container. When working on the python server backend, you only need to restart the server.
|
||||
|
||||
1. You can usually restart the backend via Maintenance > Logs > Restart server
|
||||
1. You can usually restart the backend via _Maintenance > Logs > Restart_ server
|
||||
|
||||

|
||||
|
||||
@@ -86,11 +91,13 @@ Most code changes can be tetsed without rebuilding the container. When working o
|
||||
- `sudo docker exec -it netalertx /bin/bash`
|
||||
- `pkill -f "python /app/server" && python /app/server & `
|
||||
|
||||
3. If none of the above work, restart the docker image. This is usually the last resort as sometimes the Docker engine becomes unresponsive and the whole engine needs to be restarted.
|
||||
3. If none of the above work, restart the docker caontainer.
|
||||
|
||||
## ➕ Contributing & Pull Requests
|
||||
- This is usually the last resort as sometimes the Docker engine becomes unresponsive and the whole engine needs to be restarted.
|
||||
|
||||
**Before submitting a PR, please ensure:**
|
||||
## Contributing & Pull Requests
|
||||
|
||||
### Before submitting a PR, please ensure:
|
||||
|
||||
✔ Changes are **backward-compatible** with existing installs.
|
||||
✔ No unnecessary changes are made.
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# `docker-compose.yaml` Examples
|
||||
|
||||
> [!NOTE]
|
||||
> The container needs to run in `network_mode:"host"`. This also means that not all functionality is supported on a Windows host as Docker for Windows doesn't support this networking option.
|
||||
|
||||
### Example 1
|
||||
|
||||
```yaml
|
||||
@@ -100,3 +103,37 @@ DEV_LOCATION=/path/to/local/source/code
|
||||
```
|
||||
|
||||
To run the container execute: `sudo docker-compose --env-file /path/to/.env up`
|
||||
|
||||
|
||||
### Example 4: Docker swarm
|
||||
|
||||
Notice how the host network is defined in a swarm setup:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
netalertx:
|
||||
# Use the below line if you want to test the latest dev image
|
||||
# image: "jokobsk/netalertx-dev:latest"
|
||||
image: "ghcr.io/jokob-sk/netalertx:latest"
|
||||
volumes:
|
||||
- /mnt/MYSERVER/netalertx/config:/config:rw
|
||||
- /mnt/MYSERVER/netalertx/db:/netalertx/db:rw
|
||||
- /mnt/MYSERVER/netalertx/logs:/netalertx/front/log:rw
|
||||
environment:
|
||||
- TZ=Europe/London
|
||||
- PORT=20211
|
||||
networks:
|
||||
- outside
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
|
||||
networks:
|
||||
outside:
|
||||
external:
|
||||
name: "host"
|
||||
|
||||
|
||||
```
|
||||
|
||||
79
docs/DOCKER_SWARM.md
Executable file
@@ -0,0 +1,79 @@
|
||||
# Docker Swarm Deployment Guide (IPvlan)
|
||||
|
||||
This guide describes how to deploy **NetAlertX** in a **Docker Swarm** environment using an `ipvlan` network. This enables the container to receive a LAN IP address directly, which is ideal for network monitoring.
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Step 1: Create an IPvlan Config-Only Network on All Nodes
|
||||
|
||||
> Run this command on **each node** in the Swarm.
|
||||
|
||||
```bash
|
||||
docker network create -d ipvlan \
|
||||
--subnet=192.168.1.0/24 \ # 🔧 Replace with your LAN subnet
|
||||
--gateway=192.168.1.1 \ # 🔧 Replace with your LAN gateway
|
||||
-o ipvlan_mode=l2 \
|
||||
-o parent=eno1 \ # 🔧 Replace with your network interface (e.g., eth0, eno1)
|
||||
--config-only \
|
||||
ipvlan-swarm-config
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ Step 2: Create the Swarm-Scoped IPvlan Network (One-Time Setup)
|
||||
|
||||
> Run this on **one Swarm manager node only**.
|
||||
|
||||
```bash
|
||||
docker network create -d ipvlan \
|
||||
--scope swarm \
|
||||
--config-from ipvlan-swarm-config \
|
||||
swarm-ipvlan
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧾 Step 3: Deploy NetAlertX with Docker Compose
|
||||
|
||||
Use the following Compose snippet to deploy NetAlertX with a **static LAN IP** assigned via the `swarm-ipvlan` network.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
netalertx:
|
||||
image: ghcr.io/jokob-sk/netalertx:latest
|
||||
ports:
|
||||
- 20211:20211
|
||||
volumes:
|
||||
- /mnt/YOUR_SERVER/netalertx/config:/app/config:rw
|
||||
- /mnt/YOUR_SERVER/netalertx/db:/netalertx/app/db:rw
|
||||
- /mnt/YOUR_SERVER/netalertx/logs:/netalertx/app/log:rw
|
||||
environment:
|
||||
- TZ=Europe/London
|
||||
- PORT=20211
|
||||
networks:
|
||||
swarm-ipvlan:
|
||||
ipv4_address: 192.168.1.240 # ⚠️ Choose a free IP from your LAN
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager # 🔄 Or use: node.labels.netalertx == true
|
||||
|
||||
networks:
|
||||
swarm-ipvlan:
|
||||
external: true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Notes
|
||||
|
||||
* The `ipvlan` setup allows **NetAlertX** to have a direct IP on your LAN.
|
||||
* Replace `eno1` with your interface, IP addresses, and volume paths to match your environment.
|
||||
* Make sure the assigned IP (`192.168.1.240` above) is not in use or managed by DHCP.
|
||||
* You may also use a node label constraint instead of `node.role == manager` for more control.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Overview
|
||||
# Home Assistant integration overview
|
||||
|
||||
NetAlertX comes with MQTT support, allowing you to show all detected devices as devices in Home Assistant. It also supplies a collection of stats, such as number of online devices.
|
||||
|
||||
> [!TIP]
|
||||
> You can install NetAlertX also as a Home Assistant addon [](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) via the [alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons/). This is only possible if you run a supervised instance of Home Assistant. If not, you can still run NetAlertX in a separate Docker container and follow this guide to configure MQTT.
|
||||
> You can install NetAlertX also as a Home Assistant addon [](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) via the [alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons/) repository. This is only possible if you run a supervised instance of Home Assistant. If not, you can still run NetAlertX in a separate Docker container and follow this guide to configure MQTT.
|
||||
|
||||
## ⚠ Note
|
||||
|
||||
@@ -49,3 +49,44 @@ NetAlertX comes with MQTT support, allowing you to show all detected devices as
|
||||
[list]: ./img/HOME_ASISSTANT/HomeAssistant-Devices-List.png "list"
|
||||
[overview]: ./img/HOME_ASISSTANT/HomeAssistant-Overview-Card.png "overview"
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you can't see all devices detected, run `sudo arp-scan --interface=eth0 192.168.1.0/24` (change these based on your setup, read [Subnets](./SUBNETS.md) docs for details). This command has to be executed the NetAlertX container, not in the Home Assistant container.
|
||||
|
||||
You can access the NetAlertX container via Portainer on your host or via ssh. The container name will be something like `addon_db21ed7f_netalertx` (you can copy the `db21ed7f_netalertx` part from the browser when accessing the UI of NetAlertX).
|
||||
|
||||
## Accessing the NetAlertX container via SSH
|
||||
|
||||
1. Log into your Home Assistant host via SSH
|
||||
|
||||
```bash
|
||||
local@local:~ $ ssh pi@192.168.1.9
|
||||
```
|
||||
2. Find the NetAlertX container name, in this case `addon_db21ed7f_netalertx`
|
||||
|
||||
```bash
|
||||
pi@raspberrypi:~ $ sudo docker container ls | grep netalertx
|
||||
06c540d97f67 ghcr.io/alexbelgium/netalertx-armv7:25.3.1 "/init" 6 days ago Up 6 days (healthy) addon_db21ed7f_netalertx
|
||||
```
|
||||
|
||||
3. SSH into the NetAlertX cointainer
|
||||
|
||||
```bash
|
||||
pi@raspberrypi:~ $ sudo docker exec -it addon_db21ed7f_netalertx /bin/sh
|
||||
/ #
|
||||
```
|
||||
|
||||
4. Execute a test `asrp-scan` scan
|
||||
|
||||
```bash
|
||||
/ # sudo arp-scan --ignoredups --retry=6 192.168.1.0/24 --interface=eth0
|
||||
Interface: eth0, type: EN10MB, MAC: dc:a6:32:73:8a:b1, IPv4: 192.168.1.9
|
||||
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
|
||||
192.168.1.1 74:ac:b9:54:09:fb Ubiquiti Networks Inc.
|
||||
192.168.1.21 74:ac:b9:ad:c3:30 Ubiquiti Networks Inc.
|
||||
192.168.1.58 1c:69:7a:a2:34:7b EliteGroup Computer Systems Co., LTD
|
||||
192.168.1.57 f4:92:bf:a3:f3:56 Ubiquiti Networks Inc.
|
||||
...
|
||||
```
|
||||
|
||||
If your result doesn't contain results similar to the above, double check your subnet, interface and if you are dealing with an inaccessible network segment, read the [Remote networks documentation](./REMOTE_NETWORKS.md).
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Installation options
|
||||
|
||||
NetAlertX can be installed several ways. The best supported option is Docker, followed by a supervised the Home Assistant instance, as an Unraid app and lastly on bare metal.
|
||||
NetAlertX can be installed several ways. The best supported option is Docker, followed by a supervised Home Assistant instance, as an Unraid app, and lastly, on bare metal.
|
||||
|
||||
- [[Installation] Docker (recommended)](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md)
|
||||
- [[Installation] Home Assistant](https://github.com/alexbelgium/hassio-addons/tree/master/netalertx)
|
||||
|
||||
26
docs/LOGGING.md
Executable file
@@ -0,0 +1,26 @@
|
||||
# Logging
|
||||
|
||||
NetAlertX comes with several logs that help to identify application issues.
|
||||
|
||||
For plugin-specific log debugging, please read the [Debug Plugins](./DEBUG_PLUGINS.md) guide.
|
||||
|
||||
When debugging any issue, increase the `LOG_LEVEL` Setting as per the [Debug tips](./DEBUG_TIPS.md) documentation.
|
||||
|
||||
|
||||
## Main logs
|
||||
|
||||
You can find most of the logs exposed in the UI under _Maintenance -> Logs_.
|
||||
|
||||
If the UI is inaccessible, you can access them under `/app/log`.
|
||||
|
||||

|
||||
|
||||
In the _Maintennace -> Logs_ you can **Purge logs**, download the full log file or Filter the lines with some substring to narrow down your search.
|
||||
|
||||
## Plugin logging
|
||||
|
||||
If a Plugin supplies data to the main app it's done either vie a SQL query or via a script that updates the `last_result.log` file in the plugin log folder (`app/log/plugins/`). These files are processed at the end of the scan and deleted on successful processing.
|
||||
|
||||
The data is in most of the cases then displayed in the application under _Integrations -> Plugins_ (or _Device -> Plugins_ if the plugin is supplying device-specific data).
|
||||
|
||||

|
||||
@@ -43,14 +43,13 @@ The application installation folder in the docker container has changed from `/h
|
||||
|
||||
# Examples
|
||||
|
||||
Exmaples of docker files with the new mount points.
|
||||
Examples of docker files with the new mount points.
|
||||
|
||||
## Example 1: Mapping folders
|
||||
|
||||
### Old docker-compose.yml
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
pialert:
|
||||
container_name: pialert
|
||||
@@ -72,7 +71,6 @@ services:
|
||||
### New docker-compose.yml
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
netalertx: # ⚠ This has changed (🟡optional)
|
||||
container_name: netalertx # ⚠ This has changed (🟡optional)
|
||||
@@ -100,7 +98,6 @@ services:
|
||||
### Old docker-compose.yml
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
pialert:
|
||||
container_name: pialert
|
||||
@@ -122,7 +119,6 @@ services:
|
||||
### New docker-compose.yml
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
netalertx: # ⚠ This has changed (🟡optional)
|
||||
container_name: netalertx # ⚠ This has changed (🟡optional)
|
||||
|
||||
47
docs/NAME_RESOLUTION.md
Executable file
@@ -0,0 +1,47 @@
|
||||
# Device Name Resolution
|
||||
|
||||
Name resolution in NetAlertX relies on multiple plugins to resolve device names from IP addresses. If you are seeing `(name not found)` as device names, follow these steps to diagnose and fix the issue.
|
||||
|
||||
## Required Plugins
|
||||
|
||||
For best results, ensure the following name resolution plugins are enabled:
|
||||
|
||||
- **AVAHISCAN** – Uses mDNS/Avahi to resolve local network names.
|
||||
- **NBTSCAN** – Queries NetBIOS to find device names.
|
||||
- **NSLOOKUP** – Performs standard DNS lookups.
|
||||
|
||||
You can check which plugins are active in your _Settings_ section and enable any that are missing.
|
||||
|
||||
There are other plugins that can supply device names as well, but they rely on bespoke hardware and services. See [Plugins overview](./PLUGINS.md) for details and look for plugins with name discovery (🆎) features.
|
||||
|
||||
## Checking Logs
|
||||
|
||||
If names are not resolving, check the logs for errors or timeouts.
|
||||
|
||||
See how to explore logs in the [Logging guide](./LOGGING.md).
|
||||
|
||||
Logs will show which plugins attempted resolution and any failures encountered.
|
||||
|
||||
## Adjusting Timeout Settings
|
||||
|
||||
If resolution is slow or failing due to timeouts, increase the timeout settings in your configuration, for example.
|
||||
|
||||
```ini
|
||||
NSLOOKUP_RUN_TIMEOUT = 30
|
||||
```
|
||||
|
||||
Raising the timeout may help if your network has high latency or slow DNS responses.
|
||||
|
||||
## Checking Plugin Objects
|
||||
|
||||
Each plugin stores results in its respective object. You can inspect these objects to see if they contain valid name resolution data.
|
||||
|
||||
See [Logging guide](./LOGGING.md) and [Debug plugins](./DEBUG_PLUGINS.md) guides for details.
|
||||
|
||||
If the object contains no results, the issue may be with DNS settings or network access.
|
||||
|
||||
## Improving name resolution
|
||||
|
||||
For more details how to improve name resolution refer to the
|
||||
[Reverse DNS Documentation](./REVERSE_DNS.md).
|
||||
|
||||
@@ -17,10 +17,13 @@ There are 4 ways how to influence notifications:
|
||||
|
||||
There are 4 settings on the device for influencing notifications. You can:
|
||||
|
||||
1. **Alert Events** - Enables alerts of connections, disconnections, IP changes.
|
||||
2. **Alert Down** - Alerts when a device goes down. This setting overrides a disabled **Alert Events** setting, so you will get a notification of a device going down even if you don't have **Alert Events** ticked.
|
||||
1. **Alert Events** - Enables alerts of connections, disconnections, IP changes (down and down reconnected notifications are still sent even if this is disabled).
|
||||
2. **Alert Down** - Alerts when a device goes down. This setting overrides a disabled **Alert Events** setting, so you will get a notification of a device going down even if you don't have **Alert Events** ticked. Disabling this will disable down and down reconnected notifications on the device.
|
||||
3. **Skip repeated notifications**, if for example you know there is a temporary issue and want to pause the same notification for this device for a given time.
|
||||
|
||||
> [!NOTE]
|
||||
> Please read through the [NTFPRCS plugin](https://github.com/jokob-sk/NetAlertX/blob/main/front/plugins/notification_processing/README.md) documentation to understand how device and global settings influence the notification processing.
|
||||
|
||||
## Plugin settings 🔌
|
||||
|
||||

|
||||
@@ -38,7 +41,7 @@ Click the **Read more in the docs.** Link at the top of each plugin to get more
|
||||
|
||||
In Notification Processing settings, you can specify blanket rules. These allow you to specify exceptions to the Plugin and Device settings and will override those.
|
||||
|
||||
1. Notify on (`NTFPRCS_INCLUDED_SECTIONS`) allows you to specify which events trigger notifications. Usual setups will have `new_devices`, `down_devices`, and possibly `down_reconnected` set. Including `plugin` (dependenton the Plugin `<plugin>_WATCH` and `<plugin>_REPORT_ON` settings) and `events` (dependent on the on-device **Alert Events** setting) might be too noisy for most setups. More info in the [NTFPRCS plugin](/front/plugins/notification_processing/README.md)
|
||||
1. Notify on (`NTFPRCS_INCLUDED_SECTIONS`) allows you to specify which events trigger notifications. Usual setups will have `new_devices`, `down_devices`, and possibly `down_reconnected` set. Including `plugin` (dependenton the Plugin `<plugin>_WATCH` and `<plugin>_REPORT_ON` settings) and `events` (dependent on the on-device **Alert Events** setting) might be too noisy for most setups. More info in the [NTFPRCS plugin](https://github.com/jokob-sk/NetAlertX/blob/main/front/plugins/notification_processing/README.md) on what events these selections include.
|
||||
2. Alert down after (`NTFPRCS_alert_down_time`) is useful if you want to wait for some time before the system sends out a down notification for a device. This is related to the on-device **Alert down** setting and only devices with this checked will trigger a down notification.
|
||||
3. A filter to allow you to set device-specific exceptions to New devices being added to the app.
|
||||
4. A filter to allow you to set device-specific exceptions to generated Events.
|
||||
|
||||
@@ -8,17 +8,38 @@ NetAlertX supports additional plugins to extend its functionality, each with its
|
||||
## ⚡ Quick start
|
||||
|
||||
> [!TIP]
|
||||
> You can load additional Plugins via the General -> `LOADED_PLUGINS` setting.
|
||||
> You can load additional Plugins via the General -> `LOADED_PLUGINS` setting. You need to save the settings for the new plugins to load (cache/page reload may be necessary).
|
||||
> 
|
||||
|
||||
1. Pick your `🔍 dev scanner` plugin (e.g. `ARPSCAN` or `NMAPDEV`), or import devices into the application with an `📥 importer` plugin. (See **✅Enabling plugins** below)
|
||||
1. Pick your `🔍 dev scanner` plugin (e.g. `ARPSCAN` or `NMAPDEV`), or import devices into the application with an `📥 importer` plugin. (See **Enabling plugins** below)
|
||||
2. Pick a `▶️ publisher` plugin, if you want to send notifications. If you don't see a publisher you'd like to use, look at the [📚_publisher_apprise](/front/plugins/_publisher_apprise/) plugin which is a proxy for over 80 notification services.
|
||||
3. Setup your [Network topology diagram](./NETWORK_TREE.md)
|
||||
4. Fine-tune [Notifications](./NOTIFICATIONS.md)
|
||||
5. [Backup your setup](./BACKUPS.md)
|
||||
6. Contribute and [Create custom plugins](./PLUGINS_DEV.md)
|
||||
5. Setup [Workflows](./WORKFLOWS.md)
|
||||
6. [Backup your setup](./BACKUPS.md)
|
||||
7. Contribute and [Create custom plugins](./PLUGINS_DEV.md)
|
||||
|
||||
|
||||
## 📑 Available Plugins
|
||||
## Plugin types
|
||||
|
||||
| Plugin type | Icon | Description | When to run | Required | Data source [?](./PLUGINS_DEV.md) |
|
||||
| -------------- | ---- | ---------------------------------------------------------------- | ----------------------------------- | -------- | ------------------------------------- |
|
||||
| publisher | ▶️ | Sending notifications to services. | `on_notification` | ✖ | Script |
|
||||
| dev scanner | 🔍 | Create devices in the app, manages online/offline device status. | `schedule` | ✖ | Script / SQLite DB |
|
||||
| name discovery | 🆎 | Discovers names of devices via various protocols. | `before_name_updates`, `schedule` | ✖ | Script |
|
||||
| importer | 📥 | Importing devices from another service. | `schedule` | ✖ | Script / SQLite DB |
|
||||
| system | ⚙ | Providing core system functionality. | `schedule` / always on | ✖/✔ | Script / Template |
|
||||
| other | ♻ | Other plugins | misc | ✖ | Script / Template |
|
||||
|
||||
## Features
|
||||
|
||||
| Icon | Description |
|
||||
| ---- | ------------------------------------------------------------ |
|
||||
| 🖧 | Auto-imports the network topology diagram |
|
||||
| 🔄 | Has the option to sync some data back into the plugin source |
|
||||
|
||||
|
||||
## Available Plugins
|
||||
|
||||
Device-detecting plugins insert values into the `CurrentScan` database table. The plugins that are not required are safe to ignore, however, it makes sense to have at least some device-detecting plugins enabled, such as `ARPSCAN` or `NMAPDEV`.
|
||||
|
||||
@@ -36,7 +57,7 @@ Device-detecting plugins insert values into the `CurrentScan` database table. T
|
||||
| `DHCPLSS` | 🔍/📥/🆎| Import devices from DHCP leases | | | Script | [dhcp_leases](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_leases/) |
|
||||
| `DHCPSRVS` | ♻ | DHCP servers | | | Script | [dhcp_servers](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_servers/) |
|
||||
| `FREEBOX` | 🔍/♻/🆎| Pull data and names from Freebox/Iliadbox | | | Script | [freebox](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/freebox/) |
|
||||
| `ICMP` | 🔍 | ICMP (ping) status checker | | | Script | [icmp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/icmp_scan/) |
|
||||
| `ICMP` | ♻ | ICMP (ping) status checker | | | Script | [icmp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/icmp_scan/) |
|
||||
| `INTRNT` | 🔍 | Internet IP scanner | | | Script | [internet_ip](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_ip/) |
|
||||
| `INTRSPD` | ♻ | Internet speed test | | | Script | [internet_speedtest](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_speedtest/) |
|
||||
| `IPNEIGH` | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | | Script | [ipneigh](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ipneigh/) |
|
||||
@@ -72,27 +93,9 @@ Device-detecting plugins insert values into the `CurrentScan` database table. T
|
||||
> ❌ marked for removal
|
||||
> ⌚It's recommended to use the same schedule interval for all plugins responsible for discovering new devices.
|
||||
|
||||
## Plugin types
|
||||
|
||||
|
||||
| Plugin type | Icon | Description | When to run | Required | Data source [?](./PLUGINS_DEV.md) |
|
||||
| -------------- | ---- | ---------------------------------------------------------------- | ----------------------------------- | -------- | ------------------------------------- |
|
||||
| publisher | ▶️ | Sending notifications to services. | `on_notification` | ✖ | Script |
|
||||
| dev scanner | 🔍 | Create devices in the app, manages online/offline device status. | `schedule` | ✖ | Script / SQLite DB |
|
||||
| name discovery | 🆎 | Discovers names of devices via various protocols. | `before_name_updates`, `schedule` | ✖ | Script |
|
||||
| importer | 📥 | Importing devices from another service. | `schedule` | ✖ | Script / SQLite DB |
|
||||
| system | ⚙ | Providing core system functionality. | `schedule` / always on | ✖/✔ | Script / Template |
|
||||
| other | ♻ | Other plugins | misc | ✖ | Script / Template |
|
||||
|
||||
## Features
|
||||
|
||||
| Icon | Description |
|
||||
| ---- | ------------------------------------------------------------ |
|
||||
| 🖧 | Auto-imports the network topology diagram |
|
||||
| 🔄 | Has the option to sync some data back into the plugin source |
|
||||
|
||||
|
||||
## ✅Enabling plugins
|
||||
## Enabling plugins
|
||||
|
||||
Plugins can be enabled via Settings, and can be disabled as needed.
|
||||
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
|
||||
By design, local network scanners such as `arp-scan` use ARP (Address Resolution Protocol) to map IP addresses to MAC addresses on the local network. Since ARP operates at Layer 2 (Data Link Layer), it typically works only within a single broadcast domain, usually limited to a single router or network segment.
|
||||
|
||||
To scan multiple locally accessible network segments, add them as subnets according to the [subnets](./SUBNETS.md) documentation.
|
||||
> [!NOTE]
|
||||
> Ping and `ARPSCAN` use different protocols so even if you can ping devices it doesn't mean `ARPSCAN` can detect them.
|
||||
|
||||
To scan multiple locally accessible network segments, add them as subnets according to the [subnets](./SUBNETS.md) documentation. If `ARPSCAN` is not suitable for your setup, read on.
|
||||
|
||||
## Complex Use Cases
|
||||
|
||||
The following network setups might make some devices undetectable. Check the specific setup to understand the cause and find potential workarounds to still report on these devices.
|
||||
The following network setups might make some devices undetectable with `ARPSCAN`. Check the specific setup to understand the cause and find potential workarounds to report on these devices.
|
||||
|
||||
### Wi-Fi Extenders
|
||||
|
||||
@@ -28,7 +31,7 @@ The following workarounds should work for most complex network setups.
|
||||
|
||||
## Supplementing Plugins
|
||||
|
||||
You can use supplementary plugins that employ alternate methods. Protocols used by the `SNMPDSC` or `DHCPLSS` plugins are widely supported on different routers and can be effective as workarounds. Check the [plugins list](https://github.com/jokob-sk/NetAlertX/blob/main/docs/PLUGINS.md) to find a plugin that works with your router and network setup.
|
||||
You can use supplementary plugins that employ alternate methods. Protocols used by the `SNMPDSC` or `DHCPLSS` plugins are widely supported on different routers and can be effective as workarounds. Check the [plugins list](./PLUGINS.md) to find a plugin that works with your router and network setup.
|
||||
|
||||
## Multiple NetAlertX Instances
|
||||
|
||||
|
||||
@@ -2,17 +2,14 @@
|
||||
|
||||
You need to specify the network interface and the network mask. You can also configure multiple subnets and specify VLANs (see VLAN exceptions below).
|
||||
|
||||
`ARPSCAN` can scan multiple networks if the network allows it. To scan networks directly, the subnets must be accessible from the network where NetAlertX is running. This means NetAlertX needs to have access to the interface attached to that subnet. You can verify this by running the following command in the container (replace the interface and ip mask):
|
||||
`ARPSCAN` can scan multiple networks if the network allows it. To scan networks directly, the subnets must be accessible from the network where NetAlertX is running. This means NetAlertX needs to have access to the interface attached to that subnet.
|
||||
|
||||
`sudo arp-scan --interface=eth0 192.168.1.0/24`
|
||||
> [!WARNING]
|
||||
> If you don't see all expected devices run the following command in the NetAlertX container (replace the interface and ip mask):
|
||||
> `sudo arp-scan --interface=eth0 192.168.1.0/24`
|
||||
>
|
||||
> If this command returns no results, the network is not accessible due to your network or firewall restrictions (Wi-Fi Extenders, VPNs and inaccessible networks). If direct scans are not possible, check the [remote networks documentation](./REMOTE_NETWORKS.md) for workarounds.
|
||||
|
||||
In this example, `--interface=eth0 192.168.1.0/24` represents a neighboring subnet. If this command returns no results, the network is not accessible due to your network or firewall restrictions.
|
||||
|
||||
If direct scans are not possible (Wi-Fi Extenders, VPNs and inaccessible networks), check the [remote networks documentation](./REMOTE_NETWORKS.md).
|
||||
|
||||
> [!TIP]
|
||||
> You may need to increase the time between scans `ARPSCAN_RUN_SCHD` and the timeout `ARPSCAN_RUN_TIMEOUT` (and similar settings for related plugins) when adding more subnets. If the timeout setting is exceeded, the scan is canceled to prevent the application from hanging due to rogue plugins.
|
||||
> Check [debugging plugins](./DEBUG_PLUGINS.md) for more tips.
|
||||
|
||||
## Example Values
|
||||
|
||||
@@ -24,7 +21,17 @@ If direct scans are not possible (Wi-Fi Extenders, VPNs and inaccessible network
|
||||
* One subnet: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0']`
|
||||
* Two subnets: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0','192.168.1.0/24 --interface=eth1 --vlan=107']`
|
||||
|
||||
If you get timeout messages, decrease the network mask (e.g.: from `/16` to `/24`) or increase the `TIMEOUT` setting (e.g.: `ARPSCAN_RUN_TIMEOUT` to `300` (5-minute timeout)) for the plugin and the interval between scans (e.g.: `ARPSCAN_RUN_SCHD` to `*/10 * * * *` (scans every 10 minutes)).
|
||||
> [!TIP]
|
||||
> When adding more subnets, you may need to increase both the scan interval (`ARPSCAN_RUN_SCHD`) and the timeout (`ARPSCAN_RUN_TIMEOUT`)—as well as similar settings for related plugins.
|
||||
>
|
||||
> If the timeout is too short, you may see timeout errors in the log. To prevent the application from hanging due to unresponsive plugins, scans are canceled when they exceed the timeout limit.
|
||||
>
|
||||
> To fix this:
|
||||
> - Reduce the subnet size (e.g., change `/16` to `/24`).
|
||||
> - Increase the timeout (e.g., set `ARPSCAN_RUN_TIMEOUT` to `300` for a 5-minute timeout).
|
||||
> - Extend the scan interval (e.g., set `ARPSCAN_RUN_SCHD` to `*/10 * * * *` to scan every 10 minutes).
|
||||
>
|
||||
> For more troubleshooting tips, see [Debugging Plugins](./DEBUG_PLUGINS.md).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ services:
|
||||
|
||||

|
||||
|
||||
7. Replace the paths to your volume and/or comment out unnecessary line(s):
|
||||
7. Replace the paths to your volume and comment out unnecessary line(s):
|
||||
|
||||
- This is only an example, your paths will differ.
|
||||
|
||||
|
||||
@@ -1,49 +1,70 @@
|
||||
# Debugging inaccessible UI
|
||||
|
||||
## 1. Port conflicts
|
||||
The application uses the following default ports:
|
||||
|
||||
When opening an issue please:
|
||||
- **Web UI**: `20211`
|
||||
- **GraphQL API**: `20212`
|
||||
|
||||
The **Web UI** is served by an **nginx** server, while the **API backend** runs on a **Flask (Python)** server.
|
||||
|
||||
## Changing Ports
|
||||
|
||||
- To change the **Web UI** port, update the `PORT` environment variable in the `docker-compose.yml` file.
|
||||
- To change the **GraphQL API** port, use the `GRAPHQL_PORT` setting, either directly or via Docker:
|
||||
```yaml
|
||||
APP_CONF_OVERRIDE={"GRAPHQL_PORT":"20212"}
|
||||
```
|
||||
|
||||
For more information, check the [Docker installation guide](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md).
|
||||
|
||||
## Possible issues and troubleshooting
|
||||
|
||||
Follow all of the below in order to disqualify potential causes of issues and to troubleshoot these problems faster.
|
||||
|
||||
### 1. Port conflicts
|
||||
|
||||
When opening an issue or debugging:
|
||||
|
||||
1. Include a screenshot of what you see when accessing `HTTP://<your rpi IP>/20211` (or your custom port)
|
||||
1. [Follow steps 1, 2, 3, 4 on this page](./DEBUG_TIPS.md)
|
||||
1. Execute the following in the container to see the processes and their ports and submit a screenshot of the result:
|
||||
1. `sudo apk add lsof`
|
||||
1. `sudo lsof -i`
|
||||
1. Try running the `nginx` command in the container
|
||||
1. if you get `nginx: [emerg] bind() to 0.0.0.0:20211 failed (98: Address in use)` try using a different port number
|
||||
- `sudo apk add lsof`
|
||||
- `sudo lsof -i`
|
||||
1. Try running the `nginx` command in the container:
|
||||
- if you get `nginx: [emerg] bind() to 0.0.0.0:20211 failed (98: Address in use)` try using a different port number
|
||||
|
||||
|
||||

|
||||
|
||||
## 2. JavaScript issues
|
||||
### 2. JavaScript issues
|
||||
|
||||
Check for browser console (F12 browser dev console) errors + check different browsers.
|
||||
|
||||
## 3. Clear the app cache and cached JavaScript files
|
||||
### 3. Clear the app cache and cached JavaScript files
|
||||
|
||||
Refresh the browser cache (usually shoft + refresh), try a private window, or different browsers. Please also refresh the app cache by clicking the 🔃 (reload) button in the header of the application.
|
||||
|
||||
## 4. Disable proxy
|
||||
### 4. Disable proxies
|
||||
|
||||
If you have any reverse proxy or similar, try disabling it.
|
||||
|
||||
## 5. Disable your firewall
|
||||
### 5. Disable your firewall
|
||||
|
||||
If you are using a firewall, try to temporarily disabling it.
|
||||
|
||||
## 6. Post your docker start details
|
||||
### 6. Post your docker start details
|
||||
|
||||
If you haven't, post your docker compose/run command.
|
||||
|
||||
## 7. Check for errors in your PHP/NGINX error logs
|
||||
### 7. Check for errors in your PHP/NGINX error logs
|
||||
|
||||
In the container execute:
|
||||
In the container execute and investigate:
|
||||
|
||||
`cat /var/log/nginx/error.log`
|
||||
|
||||
`cat /app/log/app.php_errors.log`
|
||||
|
||||
## 8. Make sure permissions are correct
|
||||
### 8. Make sure permissions are correct
|
||||
|
||||
> [!TIP]
|
||||
> You can try to start the container without mapping the `/app/config` and `/app/db` dirs and if the UI shows up then the issue is most likely related to your file system permissions or file ownership.
|
||||
|
||||
130
docs/WORKFLOWS.md
Executable file
@@ -0,0 +1,130 @@
|
||||
# Workflows Overview
|
||||
|
||||
The workflows module in allows to automate repetitive tasks, making network management more efficient. Whether you need to assign newly discovered devices to a specific Network Node, auto-group devices from a given vendor, unarchive a device if detected online, or automatically delete devices, this module provides the flexibility to tailor the automations to your needs.
|
||||
|
||||

|
||||
|
||||
Below are a few examples that demonstrate how this module can be used to simplify network management tasks.
|
||||
|
||||
## Updating Workflows
|
||||
|
||||
> [!NOTE]
|
||||
> In order to apply a workflow change, you must first **Save** the changes and then reload the application by clicking **Restart server**.
|
||||
|
||||
## Workflow components
|
||||
|
||||
### Triggers
|
||||
|
||||

|
||||
|
||||
Triggers define the event that activates a workflow. They monitor changes to objects within the system, such as updates to devices or the insertion of new entries. When the specified event occurs, the workflow is executed.
|
||||
|
||||
> [!TIP]
|
||||
> Workflows not running? Check the [Workflows debugging](./WORKFLOWS_DEBUGGING.md) guide how to troubleshoot triggers and conditions.
|
||||
|
||||
#### Example Trigger:
|
||||
- **Object Type**: `Devices`
|
||||
- **Event Type**: `update`
|
||||
|
||||
This trigger will activate when a `Device` object is updated.
|
||||
|
||||
### Conditions
|
||||
|
||||

|
||||
|
||||
Conditions determine whether a workflow should proceed based on certain criteria. These criteria can be set for specific fields, such as whether a device is from a certain vendor, or whether it is new or archived. You can combine conditions using logical operators (`AND`, `OR`).
|
||||
|
||||
> [!TIP]
|
||||
> To better understand how to use specific Device fields, please read through the [Database overview](./DATABASE.md) guide.
|
||||
|
||||
#### Example Condition:
|
||||
- **Logic**: `AND`
|
||||
- **Field**: `devVendor`
|
||||
- **Operator**: `contains` (case in-sensitive)
|
||||
- **Value**: `Google`
|
||||
|
||||
This condition checks if the device's vendor is `Google`. The workflow will only proceed if the condition is true.
|
||||
|
||||
### Actions
|
||||
|
||||

|
||||
|
||||
Actions define the tasks that the workflow will perform once the conditions are met. Actions can include updating fields or deleting devices.
|
||||
|
||||
You can include multiple actions that should execute once the conditions are met.
|
||||
|
||||
#### Example Action:
|
||||
- **Action Type**: `update_field`
|
||||
- **Field**: `devIsNew`
|
||||
- **Value**: `0`
|
||||
|
||||
This action updates the `devIsNew` field to `0`, marking the device as no longer new.
|
||||
|
||||
|
||||
# Examples
|
||||
|
||||
Below you can find a couple of configuration examples.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Example 1: Assign Device to Network Node Based on IP
|
||||
|
||||
This workflow assigns newly added devices with IP addresses in the `192.168.1.*` range to the device with the MAC address `6c:6d:6d:6c:6c:6c`.
|
||||
|
||||
### Trigger:
|
||||
- **Object Type**: `Devices`
|
||||
- **Event Type**: `insert`
|
||||
|
||||
### Conditions:
|
||||
- **Logic**: `AND`
|
||||
- `Field`: `devLastIP`
|
||||
- `Operator`: `contains`
|
||||
- `Value`: `192.168.1.`
|
||||
|
||||
This condition ensures that the workflow only applies to devices with an IP address in the `192.168.1.*` range.
|
||||
|
||||
### Actions:
|
||||
- **Action Type**: `update_field`
|
||||
- **Field**: `devNetworkNode`
|
||||
- **Value**: `6c:6d:6d:6c:6c:6c`
|
||||
|
||||
---
|
||||
|
||||
## Example 2: Mark Device as Not New and Delete If from Google Vendor
|
||||
|
||||
This workflow automates the process of marking Google devices as not new and deleting them if they meet the criteria.
|
||||
|
||||
### Trigger:
|
||||
- **Object Type**: `Devices`
|
||||
- **Event Type**: `update`
|
||||
|
||||
### Conditions:
|
||||
- **Logic**: `AND`
|
||||
- `Field`: `devVendor`
|
||||
- `Operator`: `contains`
|
||||
- `Value`: `Google`
|
||||
|
||||
This condition checks if the device's vendor is `Google`.
|
||||
|
||||
- **Logic**: `AND`
|
||||
- `Field`: `devIsNew`
|
||||
- `Operator`: `equals`
|
||||
- `Value`: `1`
|
||||
|
||||
This ensures the workflow applies only to new devices.
|
||||
|
||||
### Actions:
|
||||
1. **Action Type**: `update_field`
|
||||
- **Field**: `devIsNew`
|
||||
- **Value**: `0`
|
||||
|
||||
This action marks the device as no longer new.
|
||||
|
||||
2. **Action Type**: `delete_device`
|
||||
|
||||
This action deletes the device after it is marked as not new.
|
||||
|
||||
> [!TIP]
|
||||
> Share your workflows in [Discord](https://discord.com/invite/NczTUTWyRr) or [GitHub Discussions](https://github.com/jokob-sk/NetAlertX/discussions).
|
||||
38
docs/WORKFLOWS_DEBUGGING.md
Executable file
@@ -0,0 +1,38 @@
|
||||
# Workflows debugging and troubleshooting
|
||||
|
||||
> [!TIP]
|
||||
> Before troubleshooting, please ensure you have [Debugging enabled](./DEBUG_TIPS.md).
|
||||
|
||||
Workflows are triggered by various events. These events are captured and listed in the _Integrations -> App Events_ section of the application.
|
||||
|
||||
## Troubleshooting triggers
|
||||
|
||||
> [!NOTE]
|
||||
> Workflow events are processed once every 5 seconds. However, if a scan or other background tasks are running, this can cause a delay up to a few minutes.
|
||||
|
||||
If an event doesn't trigger a workflow as expected, check the _App Events_ section for the event. You can filter these by the ID of the device (`devMAC` or `devGUID`).
|
||||
|
||||

|
||||
|
||||
Once you find the _Event Guid_ and _Object GUID_, use them to find relevant debug entries.
|
||||
|
||||
Navigate to _Mainetenace -> Logs_ where you can filter the logs based on the _Event or Object GUID_.
|
||||
|
||||

|
||||
|
||||
Below you can find some example `app.log` entries that will help you understand why a Workflow was or was not triggered.
|
||||
|
||||
```bash
|
||||
16:27:03 [WF] Checking if '13f0ce26-1835-4c48-ae03-cdaf38f328fe' triggers the workflow 'Sample Device Update Workflow'
|
||||
16:27:03 [WF] self.triggered 'False' for event '[[155], ['13f0ce26-1835-4c48-ae03-cdaf38f328fe'], [0], ['2025-04-02 05:26:56'], ['Devices'], ['050b6980-7af6-4409-950d-08e9786b7b33'], ['DEVICES'], ['00:11:32:ef:a5:6c'], ['192.168.1.82'], ['050b6980-7af6-4409-950d-08e9786b7b33'], [None], [0], [0], ['devPresentLastScan'], ['online'], ['update'], [None], [None], [None], [None]] and trigger {"object_type": "Devices", "event_type": "insert"}'
|
||||
16:27:03 [WF] Checking if '13f0ce26-1835-4c48-ae03-cdaf38f328fe' triggers the workflow 'Location Change'
|
||||
16:27:03 [WF] self.triggered 'True' for event '[[155], ['13f0ce26-1835-4c48-ae03-cdaf38f328fe'], [0], ['2025-04-02 05:26:56'], ['Devices'], ['050b6980-7af6-4409-950d-08e9786b7b33'], ['DEVICES'], ['00:11:32:ef:a5:6c'], ['192.168.1.82'], ['050b6980-7af6-4409-950d-08e9786b7b33'], [None], [0], [0], ['devPresentLastScan'], ['online'], ['update'], [None], [None], [None], [None]] and trigger {"object_type": "Devices", "event_type": "update"}'
|
||||
16:27:03 [WF] Event with GUID '13f0ce26-1835-4c48-ae03-cdaf38f328fe' triggered the workflow 'Location Change'
|
||||
```
|
||||
|
||||
Note how one trigger executed, but the other didn't based on different `"event_type"` values. One is `"event_type": "insert"`, the other `"event_type": "update"`.
|
||||
|
||||
Given the Event is a update event (note `...['online'], ['update'], [None]...` in the event structure), the `"event_type": "insert"` trigger didn't execute.
|
||||
|
||||
|
||||
|
||||
BIN
docs/img/DEVICE_MANAGEMENT/device_management_display_settings.png
Executable file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
docs/img/LOGGING/logging_integrations_plugins.png
Executable file
|
After Width: | Height: | Size: 110 KiB |
BIN
docs/img/LOGGING/maintenance_logs.png
Executable file
|
After Width: | Height: | Size: 93 KiB |
BIN
docs/img/NAME_RESOLUTION/name_res_nslookup_timeout.png
Executable file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/img/PLUGINS/loaded_plugins_setting.png
Executable file
|
After Width: | Height: | Size: 77 KiB |
BIN
docs/img/WORKFLOWS/actions.jpg
Executable file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/img/WORKFLOWS/conditions.png
Executable file
|
After Width: | Height: | Size: 22 KiB |
BIN
docs/img/WORKFLOWS/trigger.jpg
Executable file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
docs/img/WORKFLOWS/workflows.png
Executable file
|
After Width: | Height: | Size: 129 KiB |
BIN
docs/img/WORKFLOWS/workflows_app_events_search.png
Executable file
|
After Width: | Height: | Size: 166 KiB |
BIN
docs/img/WORKFLOWS/workflows_diagram.png
Executable file
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/img/WORKFLOWS/workflows_logs_search.png
Executable file
|
After Width: | Height: | Size: 164 KiB |
@@ -2,18 +2,21 @@
|
||||
|
||||
Welcome to the official NetAlertX documentation! NetAlertX is a powerful tool designed to simplify the management and monitoring of your network. Below, you will find guides and resources to help you set up, configure, and troubleshoot your NetAlertX instance.
|
||||
|
||||

|
||||
|
||||
## In-App Help
|
||||
|
||||
NetAlertX provides contextual help within the application:
|
||||
|
||||
- **Hover over settings, fields, or labels** to see additional tooltips and guidance.
|
||||
- **Click ❔ (question-mark) icons** next to various elements to view detailed information.
|
||||
- Access the in-app **Help / FAQ** section for frequently asked questions and quick answers.
|
||||
|
||||
---
|
||||
|
||||
## Installation Guides
|
||||
|
||||
The app can be installed different ways, with the best support of the docker-based deployments. This includes the Home Assistant and Unraid installation approaches. See details below.
|
||||
|
||||
### Docker (Fully Supported)
|
||||
|
||||
NetAlertX is fully supported in Docker environments, allowing for easy setup and configuration. Follow the official guide to get started:
|
||||
@@ -22,12 +25,25 @@ NetAlertX is fully supported in Docker environments, allowing for easy setup and
|
||||
|
||||
This guide will take you through the process of setting up NetAlertX using Docker Compose or standalone Docker commands.
|
||||
|
||||
### Home Assistant (Fully Supported)
|
||||
|
||||
You can install NetAlertX also as a Home Assistant addon [](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) via the [alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons/) repository. This is only possible if you run a supervised instance of Home Assistant. If not, you can still run NetAlertX in a separate Docker container and follow this guide to configure MQTT.
|
||||
|
||||
- [[Installation] Home Assistant](https://github.com/alexbelgium/hassio-addons/tree/master/netalertx)
|
||||
|
||||
### Unraid (Partial Support)
|
||||
|
||||
The Unraid template was created by the community, so it's only partially supported. Alternatively, here is [another version of the Unraid template](https://github.com/jokob-sk/NetAlertX-unraid).
|
||||
|
||||
- [[Installation] Unraid App](https://unraid.net/community/apps)
|
||||
|
||||
### Bare-Metal Installation (Experimental)
|
||||
|
||||
If you prefer to run NetAlertX on your own hardware, you can try the experimental bare-metal installation. Please note that this method is still under development, and we're looking for maintainers to help improve it.
|
||||
If you prefer to run NetAlertX on your own hardware, you can try the experimental bare-metal installation. Please note that this method is still under development, and are looking for maintainers to help improve it.
|
||||
|
||||
- [Bare-Metal Installation Guide](./HW_INSTALL.md)
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Help and Support
|
||||
@@ -67,14 +83,10 @@ To keep up with the latest changes and updates to NetAlertX, please refer to the
|
||||
Make sure to follow the project on GitHub to get notifications for new releases and important updates.
|
||||
|
||||
---
|
||||
## Additional info
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- **Configuration Tips**: Learn how to optimize NetAlertX for your network setup.
|
||||
- **Advanced Features**: Explore advanced functionalities like plugin development and custom configurations.
|
||||
- **Documentation Index**: Check out the full [documentation index](https://github.com/jokob-sk/NetAlertX/tree/main/docs) for all the guides available.
|
||||
|
||||
We hope you find this documentation helpful. If you have any suggestions or improvements, please don’t hesitate to contribute!
|
||||
If you have any suggestions or improvements, please don’t hesitate to contribute!
|
||||
|
||||
---
|
||||
NetAlertX is actively maintained. You can find the source code, report bugs, or request new features on our [GitHub page](https://github.com/jokob-sk/NetAlertX).
|
||||
|
||||
@@ -1141,14 +1141,14 @@ input[readonly] {
|
||||
.settings-sticky-bottom-section {
|
||||
position: fixed;
|
||||
z-index: 999;
|
||||
background-color: #5B5B66;
|
||||
/* background-color: #5B5B66; */
|
||||
/* opacity: 0.8; */
|
||||
bottom: 30px;
|
||||
border-radius: 5px;
|
||||
/* margin:1px; */
|
||||
border-width: 1px;
|
||||
/* border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: inherit;
|
||||
border-color: inherit; */
|
||||
/* width: 87%; */
|
||||
padding: 10px;
|
||||
}
|
||||
@@ -1517,25 +1517,25 @@ input[readonly] {
|
||||
/* AdminLTE overrides */
|
||||
#networkTree .box
|
||||
{
|
||||
border-top:1px;
|
||||
/* border-top:1px; */
|
||||
border-top-color:grey;
|
||||
padding:0px;
|
||||
padding-top:6px;
|
||||
margin:0px;
|
||||
align-items:center;
|
||||
border-radius:20px;
|
||||
width:180px;
|
||||
display:flex;
|
||||
/* width:190px; Don't change, smaller causes line break in network view */
|
||||
/* display:flex; */
|
||||
flex-direction:column;
|
||||
justify-content:center;
|
||||
/* display: inline-grid; */
|
||||
}
|
||||
.networkHelpIcon
|
||||
.helpIcon
|
||||
{
|
||||
padding: 5px;
|
||||
margin-left: 5px;
|
||||
top: 55px;
|
||||
position: absolute;
|
||||
z-index:5;
|
||||
padding: 5px;
|
||||
margin-left: 0px;
|
||||
top: 47px;
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
}
|
||||
#networkTree .netNodeText
|
||||
{
|
||||
@@ -1576,17 +1576,16 @@ input[readonly] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
#networkTree .netCollapse
|
||||
{
|
||||
display: block;
|
||||
position: absolute;
|
||||
margin-left: 170px;
|
||||
font-size: large;
|
||||
left: -15px;
|
||||
right: 0;
|
||||
margin-right: -3px;
|
||||
}
|
||||
#networkTree .highlightedNode
|
||||
{
|
||||
border: solid;
|
||||
/* border: solid; */
|
||||
border-color:cyan;
|
||||
}
|
||||
#networkTree .netStatus-Off-line i,
|
||||
@@ -1597,7 +1596,6 @@ input[readonly] {
|
||||
|
||||
.spanNetworkTree {
|
||||
display: inline-block;
|
||||
width: 135px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden !important;
|
||||
text-overflow: ellipsis;
|
||||
@@ -1613,6 +1611,11 @@ input[readonly] {
|
||||
/* margin-left: 0.2em; */
|
||||
}
|
||||
|
||||
.networkTable .networkNodeTabHeaders a {
|
||||
display: block;
|
||||
height: 3em;
|
||||
}
|
||||
|
||||
.networkTable .icon {
|
||||
/* padding-left:2em; */
|
||||
width:2em;
|
||||
@@ -1631,7 +1634,6 @@ input[readonly] {
|
||||
|
||||
.networkNodeTabHeaders
|
||||
{
|
||||
max-width: 200px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
text-wrap: nowrap;
|
||||
@@ -1709,13 +1711,6 @@ input[readonly] {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
|
||||
.login-page .login-custom
|
||||
{
|
||||
width:480px;
|
||||
|
||||
}
|
||||
|
||||
/*Hidden special button*/
|
||||
|
||||
@media (max-width: 365px) {
|
||||
@@ -1843,12 +1838,54 @@ input[readonly] {
|
||||
/* -----------------------------------------------------------------------------
|
||||
Workflows
|
||||
----------------------------------------------------------------------------- */
|
||||
#wf-content-wrapper
|
||||
{
|
||||
display: grid;
|
||||
}
|
||||
|
||||
#workflowContainer
|
||||
{
|
||||
display: grid;
|
||||
}
|
||||
|
||||
#workflowContainerWrap {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
#workflowContainerWrap .panel-collapse
|
||||
{
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.workflows
|
||||
{
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
.workflows .col-sm-12, .workflows .col-sx-12
|
||||
{
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.workflows .add-button-wrap .button-container
|
||||
{
|
||||
padding-bottom: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.workflows .actions-list {
|
||||
|
||||
display: block;
|
||||
}
|
||||
|
||||
.workflows .form-group {
|
||||
margin-bottom: 7px;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.workflows .section-title
|
||||
{
|
||||
padding: 10px;
|
||||
@@ -1857,8 +1894,8 @@ input[readonly] {
|
||||
}
|
||||
|
||||
.workflows .panel, .workflows .box {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
|
||||
}
|
||||
|
||||
@@ -1866,24 +1903,86 @@ input[readonly] {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.workflows .button-container
|
||||
{
|
||||
/* display: contents; */
|
||||
text-align: center;
|
||||
/* width: 100%; */
|
||||
}
|
||||
|
||||
/* .workflows .panel:hover{
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.workflows .panel{
|
||||
opacity: 0.8;
|
||||
} */
|
||||
|
||||
.workflows .bottom-buttons button
|
||||
{
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.workflows .condition-list button
|
||||
.workflows .button-container
|
||||
{
|
||||
padding-right: 0px !important;
|
||||
padding-left: 0px !important;
|
||||
}
|
||||
|
||||
/* .workflows .condition-list button
|
||||
{
|
||||
margin: 2px;
|
||||
}
|
||||
} */
|
||||
|
||||
.button-container button
|
||||
/* .button-container button
|
||||
{
|
||||
width:100%;
|
||||
} */
|
||||
|
||||
.red-hover-text:hover
|
||||
{
|
||||
color: var(--color-red) !important;
|
||||
}
|
||||
|
||||
#workflowContainerWrap
|
||||
.green-hover-text:hover
|
||||
{
|
||||
display: contents;
|
||||
color: var(--color-green) !important;
|
||||
}
|
||||
|
||||
.workflows .bckg-icon-1-line
|
||||
{
|
||||
font-size: 3em;
|
||||
display: block;
|
||||
position: absolute;
|
||||
opacity: 0.1;
|
||||
right: 0.1em;
|
||||
}
|
||||
.workflows .bckg-icon-2-line
|
||||
{
|
||||
font-size: 6em;
|
||||
display: block;
|
||||
position: absolute;
|
||||
opacity: 0.1;
|
||||
right: 0.1em;
|
||||
}
|
||||
.workflows .bckg-icon-3-line
|
||||
{
|
||||
font-size: 9em;
|
||||
display: block;
|
||||
position: absolute;
|
||||
opacity: 0.1;
|
||||
right: 0.1em;
|
||||
}
|
||||
|
||||
|
||||
.workflows .remove-condition
|
||||
{
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.workflows .workflow-card
|
||||
{
|
||||
display: block;
|
||||
}
|
||||
|
||||
.workflow-card .panel-title
|
||||
@@ -1891,13 +1990,18 @@ input[readonly] {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.workflow-card, .condition-list, .actions-list
|
||||
.workflow-card, .actions-list
|
||||
{
|
||||
display: grid;
|
||||
display: contents;
|
||||
padding: 5px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.condition-list
|
||||
{
|
||||
z-index:1;
|
||||
}
|
||||
|
||||
.condition
|
||||
{
|
||||
padding: 5px;
|
||||
|
||||
@@ -744,4 +744,5 @@
|
||||
.thresholdFormControl
|
||||
{
|
||||
color:#000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
|
||||
// Additional form elements like the random MAC address button for devMac
|
||||
let inlineControl = "";
|
||||
// handle rendom mac
|
||||
// handle random mac
|
||||
if (setting.setKey == "NEWDEV_devMac" && deviceData["devIsRandomMAC"] == true) {
|
||||
inlineControl += `<span class="input-group-addon pointer"
|
||||
title="${getString("RandomMAC_hover")}">
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
})
|
||||
|
||||
}, 1);
|
||||
}, 100);
|
||||
});
|
||||
|
||||
}
|
||||
@@ -338,6 +338,7 @@
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Save device data to DB
|
||||
function setDeviceData(direction = '', refreshCallback = '') {
|
||||
// Check MAC
|
||||
if (mac === '') {
|
||||
|
||||
@@ -65,7 +65,7 @@ function initializeSessionsDatatable () {
|
||||
// Replace HTML codes
|
||||
{targets: [0],
|
||||
'createdCell': function (td, cellData, rowData, row, col) {
|
||||
$(td).html (translateHTMLcodes (cellData));
|
||||
$(td).html (translateHTMLcodes (localizeTimestamp(cellData)));
|
||||
} }
|
||||
],
|
||||
|
||||
|
||||
@@ -219,9 +219,8 @@ function initializeCalendar() {
|
||||
},
|
||||
|
||||
eventRender: function (event, element) {
|
||||
$(element).tooltip({container: 'body', placement: 'bottom',
|
||||
title: event.tooltip});
|
||||
// element.attr ('title', event.tooltip); // Alternative tooltip
|
||||
// $(element).tooltip({container: 'body', placement: 'bottom', title: event.tooltip});
|
||||
element.attr ('title', event.tooltip); // Alternative tooltip
|
||||
},
|
||||
|
||||
loading: function( isLoading, view ) {
|
||||
|
||||
@@ -47,9 +47,28 @@
|
||||
{visible: false, targets: [0]},
|
||||
|
||||
// Replace HTML codes
|
||||
{targets: [1,2,3,5],
|
||||
{targets: [3,5],
|
||||
'createdCell': function (td, cellData, rowData, row, col) {
|
||||
$(td).html (translateHTMLcodes (cellData));
|
||||
} },
|
||||
// Date
|
||||
{targets: [1,2],
|
||||
"createdCell": function (td, cellData, rowData, row, col) {
|
||||
// console.log(cellData);
|
||||
|
||||
if (!cellData.includes("missing event") && !cellData.includes("..."))
|
||||
{
|
||||
if (cellData.includes("+")) { // Check if timezone offset is present
|
||||
cellData = cellData.split('+')[0]; // Remove timezone offset
|
||||
}
|
||||
// console.log(cellData);
|
||||
result = localizeTimestamp(cellData);
|
||||
} else
|
||||
{
|
||||
result = translateHTMLcodes(cellData)
|
||||
}
|
||||
|
||||
$(td).html (result);
|
||||
} }
|
||||
],
|
||||
|
||||
|
||||
@@ -74,10 +74,10 @@
|
||||
|
||||
<!-- box-header -->
|
||||
<div class="box-header">
|
||||
<div class=" col-md-9 ">
|
||||
<div class=" col-sm-8 ">
|
||||
<h3 id="tableDevicesTitle" class="box-title text-gray "></h3>
|
||||
</div>
|
||||
<div class="dummyDevice col-md-3 ">
|
||||
<div class="dummyDevice col-sm-4 ">
|
||||
<span id="multiEditPlc">
|
||||
<!-- multi edit button placeholder -->
|
||||
</span>
|
||||
@@ -218,7 +218,7 @@ function getDevicesTotals() {
|
||||
|
||||
// Attempt to fetch data
|
||||
$.ajax({
|
||||
url: '/php/server/query_json.php',
|
||||
url: 'php/server/query_json.php',
|
||||
type: "GET",
|
||||
dataType: "json",
|
||||
data: {
|
||||
@@ -336,7 +336,7 @@ let columnFilters = [];
|
||||
function initFilters() {
|
||||
// Attempt to fetch data
|
||||
$.ajax({
|
||||
url: '/php/server/query_json.php',
|
||||
url: 'php/server/query_json.php',
|
||||
type: "GET",
|
||||
dataType: "json",
|
||||
data: {
|
||||
@@ -743,6 +743,7 @@ function initializeDatatable (status) {
|
||||
'ordering' : true,
|
||||
'info' : true,
|
||||
'autoWidth' : false,
|
||||
'dom': '<"top"f>rtl<"bottom"ip><"clear">',
|
||||
|
||||
// Parameters
|
||||
'pageLength' : tableRows,
|
||||
@@ -987,7 +988,7 @@ function handleLoadingDialog(needsReload = false)
|
||||
{
|
||||
// console.log(`needsReload: ${needsReload}`);
|
||||
|
||||
$.get('/php/server/query_logs.php?file=execution_queue.log&nocache=' + Date.now(), function(data) {
|
||||
$.get('php/server/query_logs.php?file=execution_queue.log&nocache=' + Date.now(), function(data) {
|
||||
|
||||
if(data.includes("update_api|devices"))
|
||||
{
|
||||
|
||||
@@ -216,7 +216,7 @@ function initializeDatatable () {
|
||||
} },
|
||||
|
||||
// Replace HTML codes
|
||||
{targets: [3,4,5,6,7],
|
||||
{targets: [4,5,6,7],
|
||||
"createdCell": function (td, cellData, rowData, row, col) {
|
||||
$(td).html (translateHTMLcodes (cellData));
|
||||
} },
|
||||
@@ -226,6 +226,12 @@ function initializeDatatable () {
|
||||
"createdCell": function (td, cellData, rowData, row, col) {
|
||||
// console.log(cellData);
|
||||
$(td).html (cellData);
|
||||
} },
|
||||
// Date
|
||||
{targets: [3],
|
||||
"createdCell": function (td, cellData, rowData, row, col) {
|
||||
// console.log(cellData);
|
||||
$(td).html (localizeTimestamp(cellData));
|
||||
} }
|
||||
],
|
||||
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
<link rel="stylesheet" href="css/app.css">
|
||||
|
||||
<?php
|
||||
require dirname(__FILE__).'/php/server/init.php';
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// check if authenticated
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
|
||||
// Be CAREFUL WHEN INCLUDING NEW PHP FILES
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/server/db.php';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/language/lang.php';
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
|
||||
|
||||
$CookieSaveLoginName = 'NetAlertX_SaveLogin';
|
||||
|
||||
@@ -92,10 +95,8 @@ if (isset ($_SESSION["login"]) == FALSE || $_SESSION["login"] != 1)
|
||||
<!-- iCheck -->
|
||||
<link rel="stylesheet" href="lib/iCheck/square/blue.css">
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="lib/font-awesome/fontawesome.min.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/solid.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/brands.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/v5-font-face.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/all.min.css">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link id="favicon" rel="icon" type="image/x-icon" href="img/NetAlertX_logo.png">
|
||||
|
||||
@@ -112,7 +113,7 @@ switch ($UI_THEME) {
|
||||
?>
|
||||
<link rel="stylesheet" href="/css/offline-font.css">
|
||||
</head>
|
||||
<body class="hold-transition login-page">
|
||||
<body class="hold-transition login-page col-sm-12 col-sx-12">
|
||||
<div class="login-box login-custom">
|
||||
<div class="login-logo">
|
||||
<a href="/index2.php">Net<b>Alert</b><sup>x</sup></a>
|
||||
|
||||
@@ -353,6 +353,28 @@ function getLangCode() {
|
||||
// String utilities
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
function localizeTimestamp(result)
|
||||
{
|
||||
|
||||
// contains TZ in format Europe/Berlin
|
||||
tz = getSetting("TIMEZONE")
|
||||
|
||||
const date = new Date(result); // Assumes result is a timestamp or ISO string
|
||||
const formatter = new Intl.DateTimeFormat('default', {
|
||||
timeZone: tz,
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
hour12: false // change to true if you want AM/PM format
|
||||
});
|
||||
|
||||
return formatter.format(date);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
/**
|
||||
* Replaces double quotes within single-quoted strings, then converts all single quotes to double quotes,
|
||||
@@ -1303,6 +1325,38 @@ $(document).ready(function() {
|
||||
}
|
||||
});
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// Restart Backend Python Server
|
||||
|
||||
function askRestartBackend() {
|
||||
// Ask
|
||||
showModalWarning(getString('Maint_RestartServer'), getString('Maint_Restart_Server_noti_text'),
|
||||
getString('Gen_Cancel'), getString('Maint_RestartServer'), 'restartBackend');
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
function restartBackend() {
|
||||
|
||||
modalEventStatusId = 'modal-message-front-event'
|
||||
|
||||
// Execute
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "php/server/util.php",
|
||||
data: { function: "addToExecutionQueue", action: `${getGuid()}|cron_restart_backend` },
|
||||
success: function(data, textStatus) {
|
||||
// showModalOk ('Result', data );
|
||||
|
||||
// show message
|
||||
showModalOk(getString("general_event_title"), `${getString("general_event_description")} <br/> <br/> <code id='${modalEventStatusId}'></code>`);
|
||||
|
||||
updateModalState()
|
||||
|
||||
write_notification('[Maintenance] App manually restarted', 'info')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// initialize
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
@@ -85,7 +85,7 @@ function renderList(
|
||||
// Check if database is locked
|
||||
function checkDbLock() {
|
||||
$.ajax({
|
||||
url: "/php/server/query_logs.php?file=db_is_locked.log",
|
||||
url: "php/server/query_logs.php?file=db_is_locked.log",
|
||||
type: "GET",
|
||||
|
||||
success: function (response) {
|
||||
|
||||
@@ -68,11 +68,13 @@ function showModalWarning(
|
||||
callbackFunction = null,
|
||||
triggeredBy = null
|
||||
) {
|
||||
prefix = "modal-warning";
|
||||
|
||||
// set captions
|
||||
$("#modal-warning-title").html(title);
|
||||
$("#modal-warning-message").html(message);
|
||||
$("#modal-warning-cancel").html(btnCancel);
|
||||
$("#modal-warning-OK").html(btnOK);
|
||||
$(`#${prefix}-title`).html(title);
|
||||
$(`#${prefix}-message`).html(message);
|
||||
$(`#${prefix}-cancel`).html(btnCancel);
|
||||
$(`#${prefix}-OK`).html(btnOK);
|
||||
|
||||
if (callbackFunction != null) {
|
||||
modalCallbackFunction = callbackFunction;
|
||||
@@ -83,7 +85,7 @@ function showModalWarning(
|
||||
}
|
||||
|
||||
// Show modal
|
||||
$("#modal-warning").modal("show");
|
||||
$(`#${prefix}`).modal("show");
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -93,7 +95,8 @@ function showModalInput(
|
||||
btnCancel = getString("Gen_Cancel"),
|
||||
btnOK = getString("Gen_Okay"),
|
||||
callbackFunction = null,
|
||||
triggeredBy = null
|
||||
triggeredBy = null,
|
||||
defaultValue = ""
|
||||
) {
|
||||
prefix = "modal-input";
|
||||
|
||||
@@ -102,6 +105,7 @@ function showModalInput(
|
||||
$(`#${prefix}-message`).html(message);
|
||||
$(`#${prefix}-cancel`).html(btnCancel);
|
||||
$(`#${prefix}-OK`).html(btnOK);
|
||||
$(`#${prefix}-textarea`).val(defaultValue);
|
||||
|
||||
if (callbackFunction != null) {
|
||||
modalCallbackFunction = callbackFunction;
|
||||
|
||||
@@ -422,7 +422,7 @@ function updateModalState() {
|
||||
setTimeout(function() {
|
||||
// Fetch the content from the log file using an AJAX request
|
||||
$.ajax({
|
||||
url: '/php/server/query_logs.php?file=execution_queue.log',
|
||||
url: 'php/server/query_logs.php?file=execution_queue.log',
|
||||
type: 'GET',
|
||||
success: function(data) {
|
||||
// Update the content of the HTML element (e.g., a div with id 'logContent')
|
||||
|
||||
9
front/lib/font-awesome/all.min.css
vendored
Executable file
1516
front/lib/font-awesome/brands.css
vendored
6
front/lib/font-awesome/brands.min.css
vendored
6
front/lib/font-awesome/fontawesome.min.css
vendored
19
front/lib/font-awesome/solid.css
vendored
@@ -1,19 +0,0 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fas,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
||||
6
front/lib/font-awesome/solid.min.css
vendored
@@ -1,6 +0,0 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
||||
22
front/lib/font-awesome/v5-font-face.css
vendored
@@ -1,22 +0,0 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-display: block;
|
||||
font-weight: 900;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
6
front/lib/font-awesome/v5-font-face.min.css
vendored
@@ -1,6 +0,0 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
|
||||
5
front/lib/popper_tooltip/popper.min.js
vendored
Executable file
@@ -209,7 +209,13 @@ $db->close();
|
||||
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnImportPastedConfig" onclick="askImportPastedConfig()"><?= lang('Maintenance_Tool_ImportPastedConfig');?></button>
|
||||
</div>
|
||||
<div class="db_tools_table_cell_b"><?= lang('Maintenance_Tool_ImportPastedConfig_text');?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="db_info_table_row">
|
||||
<div class="db_tools_table_cell_a" >
|
||||
<button type="button" class="btn btn-default pa-btn bg-green dbtools-button" id="btnDownloadWorkflows" onclick="DownloadWorkflows()"><?= lang('Maintenance_Tool_DownloadWorkflows');?></button>
|
||||
</div>
|
||||
<div class="db_tools_table_cell_b"><?= lang('Maintenance_Tool_DownloadWorkflows_text');?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ---------------------------Logging-------------------------------------------- -->
|
||||
@@ -395,38 +401,6 @@ function deleteActHistory()
|
||||
});
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// Restart Backend Python Server
|
||||
|
||||
function askRestartBackend() {
|
||||
// Ask
|
||||
showModalWarning('<?= lang('Maint_RestartServer');?>', '<?= lang('Maint_Restart_Server_noti_text');?>',
|
||||
'<?= lang('Gen_Cancel');?>', '<?= lang('Maint_RestartServer');?>', 'restartBackend');
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
function restartBackend() {
|
||||
|
||||
modalEventStatusId = 'modal-message-front-event'
|
||||
|
||||
// Execute
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "php/server/util.php",
|
||||
data: { function: "addToExecutionQueue", action: `${getGuid()}|cron_restart_backend` },
|
||||
success: function(data, textStatus) {
|
||||
// showModalOk ('Result', data );
|
||||
|
||||
// show message
|
||||
showModalOk(getString("general_event_title"), `${getString("general_event_description")} <br/> <br/> <code id='${modalEventStatusId}'></code>`);
|
||||
|
||||
updateModalState()
|
||||
|
||||
write_notification('[Maintenance] App manually restarted', 'info')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// Import pasted Config ASK
|
||||
function askImportPastedConfig() {
|
||||
@@ -440,17 +414,15 @@ function askImportPastedConfig() {
|
||||
// Upload Settings Config
|
||||
function UploadConfig()
|
||||
{
|
||||
// alert("aaa")
|
||||
|
||||
appConf = $('#modal-input-textarea').val()
|
||||
// encode for import
|
||||
appConfBase64 = btoa(appConf)
|
||||
|
||||
// import
|
||||
$.post('php/server/query_replace_config.php', { config: appConfBase64 }, function(msg) {
|
||||
$.post('php/server/query_replace_config.php', { base64data: appConfBase64, fileName: "app.conf" }, function(msg) {
|
||||
console.log(msg);
|
||||
// showMessage(msg);
|
||||
write_notification(`[Maintenance] Settings imported from backup: ${msg}`, 'interrupt');
|
||||
write_notification(`[Maintenance]: ${msg}`, 'interrupt');
|
||||
});
|
||||
|
||||
}
|
||||
@@ -463,6 +435,15 @@ function DownloadConfig()
|
||||
openInNewTab("php/server/query_config.php?file=app.conf&download=true")
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// Download Workflows
|
||||
|
||||
function DownloadWorkflows()
|
||||
{
|
||||
// Execute
|
||||
openInNewTab("php/server/query_config.php?file=workflows.json&download=true")
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -----------------------------------------------------------
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
// online / offline badges HTML snippets
|
||||
define('badge_online', '<div class="badge bg-green text-white" style="width: 60px;">Online</div>');
|
||||
define('badge_offline', '<div class="badge bg-red text-white" style="width: 60px;">Offline</div>');
|
||||
define('circle_online', '<div class="badge bg-green text-white" style="width: 10px; height: 10px; padding:2px; margin-top: -25px;"> </div>');
|
||||
define('circle_offline', '<div class="badge bg-red text-white" style="width: 10px; height: 10px; padding:2px; margin-top: -25px;"> </div>');
|
||||
define('sortable_column', ' <span class="sort-btn" onclick="sortColumn(this)"><i class="fa-solid fa-arrow-up-short-wide"></i></span>');
|
||||
|
||||
?>
|
||||
@@ -22,7 +20,7 @@
|
||||
<div class="content-wrapper">
|
||||
|
||||
|
||||
<span class="networkHelpIcon"> <a target="_blank" href="https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md"><i class="fa fa-circle-question"></i></a></span>
|
||||
<span class="helpIcon"> <a target="_blank" href="https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md"><i class="fa fa-circle-question"></i></a></span>
|
||||
|
||||
<div id="networkTree" class="drag"></div>
|
||||
|
||||
@@ -39,21 +37,18 @@
|
||||
}
|
||||
|
||||
// online/offline status circle (red/green)
|
||||
$node_badge = "";
|
||||
if($node_status == 1) // 1 means online, 0 offline
|
||||
$icon_style = "";
|
||||
if($node_status == 0) // 1 means online, 0 offline
|
||||
{
|
||||
$node_badge = circle_online;
|
||||
} else
|
||||
{
|
||||
$node_badge = circle_offline;
|
||||
}
|
||||
$icon_style = "style=\"color:var(--color-red);\"";
|
||||
}
|
||||
|
||||
$decoded_icon = base64_decode($icon);
|
||||
$idFromMac = str_replace(":", "_", $node_mac);
|
||||
$str_tab_header = '<li class="networkNodeTabHeaders '.$activetab.' " >
|
||||
|
||||
<a href="#'.$idFromMac.'" data-mytabmac="'.$node_mac.'" id="'.$idFromMac.'_id" data-toggle="tab" title="'.$node_name.' ">' // _id is added so it doesn't conflict with AdminLTE tab behavior
|
||||
.'<div class="icon">'.$decoded_icon.' </div> <span class="node-name">'.$node_name.'</span>' .$str_port.$node_badge.
|
||||
.'<div class="icon" '.$icon_style.'>'.$decoded_icon.' </div> <span class="node-name">'.$node_name.'</span>' .$str_port.
|
||||
'</a>
|
||||
</li>';
|
||||
|
||||
@@ -465,7 +460,7 @@
|
||||
?>
|
||||
|
||||
<script src="lib/treeviz/bundle.js"></script>
|
||||
<script src="lib/treeviz/bundle.js.map"></script>
|
||||
|
||||
|
||||
|
||||
<script defer>
|
||||
@@ -697,34 +692,56 @@ function attachTreeEvents()
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Handle network node click - select correct tab in the bottom table
|
||||
function handleNodeClick(nodeData)
|
||||
function handleNodeClick(el)
|
||||
{
|
||||
const targetTabMAC = nodeData.data.mac;
|
||||
const targetTabMAC = $(el).attr("data-mytreemacmain");
|
||||
|
||||
var targetTab = $(`a[data-mytabmac="${targetTabMAC}"]`);
|
||||
|
||||
// Simulate a click event on the target tab
|
||||
targetTab.click();
|
||||
if (targetTab.length) {
|
||||
// Simulate a click event on the target tab
|
||||
targetTab.click();
|
||||
|
||||
// Smooth scroll to the tab content
|
||||
$('html, body').animate({
|
||||
scrollTop: targetTab.offset().top - 50
|
||||
}, 500); // Adjust the duration as needed
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
var myTree;
|
||||
var visibleTreeArea = $(window).height()-155;
|
||||
var nodeWidth = 120;
|
||||
|
||||
|
||||
var emSize;
|
||||
var nodeHeight;
|
||||
var sizeCoefficient = 1.4
|
||||
// var sizeCoefficient = 1.4
|
||||
|
||||
function pxToEm(px, element) {
|
||||
var baseFontSize = parseFloat($(element || "body").css("font-size"));
|
||||
return px / baseFontSize;
|
||||
}
|
||||
|
||||
function emToPx(em, element) {
|
||||
var baseFontSize = parseFloat($(element || "body").css("font-size"));
|
||||
return Math.round(em * baseFontSize);
|
||||
}
|
||||
|
||||
function initTree(myHierarchy)
|
||||
{
|
||||
// calculate the drawing area based on teh tree width and available screen size
|
||||
var treeAreaHeight = visibleTreeArea > 800 ? 800 : visibleTreeArea;
|
||||
let screenWidth = $('.content-header').width();
|
||||
let treeWidth = (nodeWidth + 20) * parentNodesCount;
|
||||
let treeAreaWidth = screenWidth < treeWidth ? treeWidth : screenWidth;
|
||||
|
||||
let baseFontSize = parseFloat($('html').css('font-size'));
|
||||
let treeAreaHeight = ($(window).height() - 155); ;
|
||||
// calculate the font size of the leaf nodes to fit everything into the tree area
|
||||
leafNodesCount == 0 ? 1 : leafNodesCount;
|
||||
|
||||
emSize = pxToEm((treeAreaHeight/(leafNodesCount)).toFixed(2));
|
||||
|
||||
let screenWidthEm = pxToEm($('.networkTable').width());
|
||||
|
||||
// init the drawing area size
|
||||
$("#networkTree").attr('style', `height:${treeAreaHeight}px; width:${treeAreaWidth}px`)
|
||||
$("#networkTree").attr('style', `height:${treeAreaHeight}px; width:${emToPx(screenWidthEm)}px`)
|
||||
|
||||
if(myHierarchy.type == "")
|
||||
{
|
||||
@@ -733,13 +750,14 @@ function initTree(myHierarchy)
|
||||
return;
|
||||
}
|
||||
|
||||
// calculate the font size of the leaf nodes to fit everything into the tree area
|
||||
leafNodesCount == 0 ? 1 : leafNodesCount;
|
||||
emSize = ((treeAreaHeight/(25*leafNodesCount)).toFixed(2));
|
||||
emSize = emSize > 1 ? 1 : emSize;
|
||||
// handle if only a few nodes
|
||||
emSize > 1 ? emSize = 1 : emSize = emSize;
|
||||
|
||||
// nodeHeight = ((emSize*100*0.30).toFixed(0))
|
||||
nodeHeight = ((emSize*100*0.30).toFixed(0))
|
||||
let nodeHeightPx = emToPx(emSize*1);
|
||||
let nodeWidthPx = emToPx(screenWidthEm / (parentNodesCount));
|
||||
|
||||
// handle if only a few nodes
|
||||
nodeWidthPx > 160 ? nodeWidthPx = 160 : nodeWidthPx = nodeWidthPx;
|
||||
|
||||
console.log(Treeviz);
|
||||
|
||||
@@ -747,8 +765,7 @@ function initTree(myHierarchy)
|
||||
htmlId: "networkTree",
|
||||
renderNode: nodeData => {
|
||||
|
||||
var fontSize = "font-size:"+emSize+"em;";
|
||||
|
||||
|
||||
(!emptyArr.includes(nodeData.data.port )) ? port = nodeData.data.port : port = "";
|
||||
|
||||
(port == "" || port == 0 || port == 'None' ) ? portBckgIcon = `<i class="fa fa-wifi"></i>` : portBckgIcon = `<i class="fa fa-ethernet"></i>`;
|
||||
@@ -761,10 +778,10 @@ function initTree(myHierarchy)
|
||||
${atob(nodeData.data.icon)}
|
||||
</div>` : "";
|
||||
devicePort = `<div class="netPort"
|
||||
style="width:${emSize*sizeCoefficient}em;height:${emSize*sizeCoefficient}em">
|
||||
style="width:${emSize}em;height:${emSize}em">
|
||||
${portHtml}</div>
|
||||
<div class="portBckgIcon"
|
||||
style="margin-left:-${emSize*sizeCoefficient}em;">
|
||||
style="margin-left:-${emSize}em;">
|
||||
${portBckgIcon}
|
||||
</div>`;
|
||||
collapseExpandIcon = nodeData.data.hiddenChildren ?
|
||||
@@ -773,7 +790,7 @@ function initTree(myHierarchy)
|
||||
// generate +/- icon if node has children nodes
|
||||
collapseExpandHtml = nodeData.data.hasChildren ?
|
||||
`<div class="netCollapse"
|
||||
style="font-size:${emSize*sizeCoefficient}em;top:${emSize/6}em"
|
||||
style="font-size:${nodeHeightPx/2}px;top:${nodeHeightPx/4}px"
|
||||
data-mytreepath="${nodeData.data.path}"
|
||||
data-mytreemac="${nodeData.data.mac}">
|
||||
<i class="fa fa-${collapseExpandIcon} pointer"></i>
|
||||
@@ -787,21 +804,24 @@ function initTree(myHierarchy)
|
||||
// css indicating online/offline status
|
||||
statusCss = ` netStatus-${nodeData.data.status}`;
|
||||
|
||||
return result = `<div class="box ${nodeData.data.hasChildren ? "pointer":""} ${statusCss} ${highlightedCss}"
|
||||
return result = `<div
|
||||
class="node-inner box ${nodeData.data.hasChildren ? "pointer":""} ${statusCss} ${highlightedCss}"
|
||||
data-mytreemacmain="${nodeData.data.mac}"
|
||||
style="height:${nodeData.settings.nodeHeight}px;${fontSize}"
|
||||
style="height:${nodeHeightPx}px;font-size:${nodeHeightPx-5}px;"
|
||||
onclick="handleNodeClick(this)"
|
||||
>
|
||||
<div class="netNodeText">
|
||||
<strong>${devicePort} ${deviceIcon}
|
||||
<span class="spanNetworkTree anonymizeDev" >${nodeData.data.name}</span>
|
||||
</strong>
|
||||
${collapseExpandHtml}
|
||||
</div>
|
||||
</div>`;
|
||||
<span class="spanNetworkTree anonymizeDev" style="width:${nodeWidthPx-50}px">${nodeData.data.name}</span>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
${collapseExpandHtml}`;
|
||||
},
|
||||
mainAxisNodeSpacing: 'auto',
|
||||
secondaryAxisNodeSpacing: 0.3,
|
||||
nodeHeight: nodeHeight.toString(),
|
||||
// secondaryAxisNodeSpacing: 0.3,
|
||||
nodeHeight: nodeHeightPx,
|
||||
nodeWidth: nodeWidthPx,
|
||||
marginTop: '5',
|
||||
isHorizontal : true,
|
||||
hasZoom: true,
|
||||
@@ -811,8 +831,8 @@ function initTree(myHierarchy)
|
||||
hasFlatData: false,
|
||||
relationnalField: "children",
|
||||
linkWidth: (nodeData) => 3,
|
||||
linkColor: (nodeData) => "#ffcc80",
|
||||
onNodeClick: (nodeData) => handleNodeClick(nodeData),
|
||||
linkColor: (nodeData) => "#ffcc80"
|
||||
// onNodeClick: (nodeData) => handleNodeClick(nodeData),
|
||||
});
|
||||
|
||||
console.log(deviceListGlobal);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
ini_set('error_log', '../../log/app.php_errors.log'); // initializing the app.php_errors.log file for the maintenance section
|
||||
require dirname(__FILE__).'/../templates/timezone.php';
|
||||
require dirname(__FILE__).'/../templates/globals.php';
|
||||
require dirname(__FILE__).'/db.php';
|
||||
require dirname(__FILE__).'/util.php';
|
||||
require dirname(__FILE__).'/../templates/language/lang.php';
|
||||
|
||||
@@ -13,21 +13,23 @@ require dirname(__FILE__).'/../server/init.php';
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
// Get query string parameters ?file=settings_table.json&download=true
|
||||
$file = isset($_GET['file']) ? $_GET['file'] : null;
|
||||
$download = isset($_GET['download']) ? $_GET['download'] === 'true' : false;
|
||||
$download = isset($_GET['download']) && $_GET['download'] === 'true';
|
||||
|
||||
// Check if file parameter is provided
|
||||
if ($file) {
|
||||
// Define the folder where files are located
|
||||
$filePath = "/app/config/" . basename($file);
|
||||
|
||||
// Check if the file exists
|
||||
if (file_exists($filePath)) {
|
||||
// Handle download behavior
|
||||
// Check if the file exists and is readable
|
||||
if (file_exists($filePath) && is_readable($filePath)) {
|
||||
// Determine file extension
|
||||
$extension = pathinfo($filePath, PATHINFO_EXTENSION);
|
||||
|
||||
if ($download) {
|
||||
// Force file download
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
|
||||
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Pragma: public');
|
||||
@@ -35,19 +37,29 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
readfile($filePath);
|
||||
exit;
|
||||
} else {
|
||||
// Display file content
|
||||
header('Content-Type: text/plain');
|
||||
echo file_get_contents($filePath);
|
||||
// Serve file based on type
|
||||
if ($extension === 'json') {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(json_decode(file_get_contents($filePath), true), JSON_PRETTY_PRINT);
|
||||
} else {
|
||||
header('Content-Type: text/plain');
|
||||
echo file_get_contents($filePath);
|
||||
}
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
// File not found response
|
||||
http_response_code(404);
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(["error" => "File not found"]);
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
// Missing file parameter response
|
||||
http_response_code(400);
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(["error" => "Missing 'file' parameter"]);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -8,16 +8,24 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
|
||||
require dirname(__FILE__).'/../server/init.php';
|
||||
// ---- IMPORTS ----
|
||||
|
||||
global $fullConfPath;
|
||||
global $configFolderPath;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Handle incoming requests
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
// Access the 'config' parameter from the POST request
|
||||
$base64Data = $_POST['config'] ?? null;
|
||||
$base64Data = $_POST['base64data'] ?? null;
|
||||
|
||||
if (!$base64Data) {
|
||||
$msg = "Missing 'config' parameter.";
|
||||
$msg = "Missing 'base64data' parameter.";
|
||||
echo $msg;
|
||||
http_response_code(400); // Bad request
|
||||
die($msg);
|
||||
}
|
||||
$fileName = $_POST['fileName'] ?? null;
|
||||
|
||||
if (!$fileName) {
|
||||
$msg = "Missing 'fileName' parameter.";
|
||||
echo $msg;
|
||||
http_response_code(400); // Bad request
|
||||
die($msg);
|
||||
@@ -33,15 +41,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
die($msg);
|
||||
}
|
||||
|
||||
$fullPath = $configFolderPath.$fileName;
|
||||
|
||||
// Backup the original file
|
||||
if (file_exists($fullConfPath)) {
|
||||
copy($fullConfPath, $fullConfPath . ".bak");
|
||||
if (file_exists($fullPath)) {
|
||||
copy($fullPath, $fullPath . ".bak");
|
||||
}
|
||||
|
||||
// Write the new configuration
|
||||
$file = fopen($fullConfPath, "w");
|
||||
$file = fopen($fullPath, "w");
|
||||
if (!$file) {
|
||||
$msg = "Unable to open file!";
|
||||
$msg = "Unable to open file: ". $fullPath;
|
||||
echo $msg;
|
||||
http_response_code(500); // Server error
|
||||
die($msg);
|
||||
@@ -50,6 +60,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
fwrite($file, $input);
|
||||
fclose($file);
|
||||
|
||||
echo "Configuration saved successfully.";
|
||||
echo "Configuration file saved successfully: " .$fileName ;
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# Puche 2021 / 2022+ jokob jokob@duck.com GNU GPLv3
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
require dirname(__FILE__).'/../templates/timezone.php';
|
||||
require dirname(__FILE__).'/../templates/globals.php';
|
||||
require dirname(__FILE__).'/../templates/skinUI.php';
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
require dirname(__FILE__).'/../templates/timezone.php';
|
||||
require dirname(__FILE__).'/../templates/globals.php';
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// check if authenticated
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<div class="pull-right no-hidden-xs">
|
||||
| <a href="https://gurubase.io/g/netalertx" class="pointer" target="_blank" title="Ask AI"><i class="fa-regular fa-comment-dots fa-flip-horizontal"></i></a>
|
||||
| <a href="https://jokob-sk.github.io/NetAlertX/" class="pointer" target="_blank" title="Documentation"><i class="fa fa-book"></i></a>
|
||||
| <a href="https://github.com/jokob-sk/NetAlertX/issues" class="pointer" target="_blank"><i class="fa-solid fa-bug" title="Report a bug"></i></a>
|
||||
| <a href="https://github.com/jokob-sk/NetAlertX/issues" class="pointer" target="_blank"><i class="fa fa-bug" title="Report a bug"></i></a>
|
||||
| <a href="https://discord.com/invite/NczTUTWyRr" class="pointer" target="_blank"><i class="fa-brands fa-discord" title="Join Discord"></i></a>
|
||||
| <?= lang('Maintenance_built_on');?>: <?php include 'php/templates/build.php'; ?>
|
||||
| Version: <?php include 'php/templates/version.php'; ?>
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
<?php
|
||||
|
||||
// ###################################
|
||||
// ## TimeZone processing start
|
||||
// ###################################
|
||||
// ######################################################################
|
||||
// ## Global constants and TimeZone processing
|
||||
// ######################################################################
|
||||
|
||||
$configFolderPath = dirname(__FILE__)."/../../../config/";
|
||||
$config_file = "app.conf";
|
||||
$configFolderPath = "/app/config/";
|
||||
$logFolderPath = "/app/log/";
|
||||
|
||||
$config_file = "app.conf";
|
||||
$workflows_file = "workflows.json";
|
||||
|
||||
$log_file = "app_front.log";
|
||||
$default_tz = "Europe/Berlin";
|
||||
|
||||
|
||||
$fullConfPath = $configFolderPath.$config_file;
|
||||
$fullWorkflowsPath = $configFolderPath.$workflows_file;
|
||||
|
||||
$config_file_lines = file($fullConfPath);
|
||||
$config_file_lines_timezone = array_values(preg_grep('/^TIMEZONE\s.*/', $config_file_lines));
|
||||
@@ -44,7 +48,7 @@ date_default_timezone_set($timeZone);
|
||||
$date = new DateTime("now", new DateTimeZone($timeZone) );
|
||||
$timestamp = $date->format('Y-m-d_H-i-s');
|
||||
|
||||
// ###################################
|
||||
// ## TimeZone processing end
|
||||
// ###################################
|
||||
// ######################################################################
|
||||
// ## Global constants and TimeZone processing
|
||||
// ######################################################################
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<script src="lib/datatables.net/js/jquery.dataTables.min.js"></script>
|
||||
<script src="lib/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
|
||||
<script src="lib/datatables.net/js/dataTables.select.min.js"></script>
|
||||
<script src="lib/popper_tooltip/popper.min.js"></script>
|
||||
|
||||
<script src="js/common.js?v=<?php include 'php/templates/version.php'; ?>"></script>
|
||||
<script src="js/modal.js?v=<?php include 'php/templates/version.php'; ?>"></script>
|
||||
@@ -59,10 +60,7 @@
|
||||
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="lib/font-awesome/fontawesome.min.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/solid.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/brands.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/v5-font-face.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome/all.min.css">
|
||||
|
||||
<!-- Ionicons -->
|
||||
<link rel="stylesheet" href="lib/Ionicons/ionicons.min.css">
|
||||
@@ -123,34 +121,8 @@
|
||||
let timeZone = "<?php echo $timeZone ?>";
|
||||
let now = new Date();
|
||||
|
||||
// Convert to the specified time zone
|
||||
let formatter = new Intl.DateTimeFormat("en-UK", {
|
||||
timeZone: timeZone,
|
||||
day: "2-digit",
|
||||
month: "short",
|
||||
year: "numeric",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit",
|
||||
second: "2-digit",
|
||||
hour12: false, // Use 24-hour format
|
||||
});
|
||||
let parts = formatter.formatToParts(now);
|
||||
|
||||
// Extract date components
|
||||
let day = parts.find(p => p.type === "day").value;
|
||||
let month = parts.find(p => p.type === "month").value;
|
||||
let year = parts.find(p => p.type === "year").value;
|
||||
|
||||
// Extract time components
|
||||
let hour = parts.find(p => p.type === "hour").value;
|
||||
let minute = parts.find(p => p.type === "minute").value;
|
||||
let second = parts.find(p => p.type === "second").value;
|
||||
|
||||
// Construct the date and time in DD-MMM-YYYY HH:MM:SS format
|
||||
let formattedDateTime = `${day}-${month}-${year} ${hour}:${minute}:${second}`;
|
||||
|
||||
if (document.getElementById) {
|
||||
document.getElementById("NAX_Servertime_plc").innerHTML = '(' + formattedDateTime + ')';
|
||||
document.getElementById("NAX_Servertime_plc").innerHTML = '(' + localizeTimestamp(now) + ')';
|
||||
document.getElementById("NAX_TZ").innerHTML = timeZone;
|
||||
}
|
||||
|
||||
@@ -421,20 +393,15 @@
|
||||
</li>
|
||||
|
||||
<!-- Integrations menu item -->
|
||||
<li class=" treeview <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('plugins.php', 'workflows.php', 'appEvents.php' ) ) ){ echo 'active menu-open'; } ?>">
|
||||
<li class=" treeview <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('plugins.php', 'appEvents.php' ) ) ){ echo 'active menu-open'; } ?>">
|
||||
<a href="#">
|
||||
<i class="fa fa-fw fa-plug"></i> <span><?= lang('Navigation_Integrations');?></span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="treeview-menu " style="display: <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('plugins.php', 'workflows.php', 'appEvents.php' ) ) ){ echo 'block'; } else {echo 'none';} ?>;">
|
||||
<ul class="treeview-menu " style="display: <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('plugins.php', 'appEvents.php' ) ) ){ echo 'block'; } else {echo 'none';} ?>;">
|
||||
<li>
|
||||
<div class="info-icon-nav"> </div>
|
||||
<a href="workflows.php"><?= lang('Navigation_Workflows');?></a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="info-icon-nav"> </div>
|
||||
<a href="appEvents.php"><?= lang('Navigation_AppEvents');?></a>
|
||||
</li>
|
||||
<li>
|
||||
@@ -443,6 +410,11 @@
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!-- workflows menu item -->
|
||||
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('workflows.php') ) ){ echo 'active'; } ?>">
|
||||
<a href="workflows.php"><i class="fa fa-fw fa-shuffle"></i> <span><?= lang('Navigation_Workflows');?></span></a>
|
||||
</li>
|
||||
|
||||
<!-- system info menu item -->
|
||||
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('systeminfo.php') ) ){ echo 'active'; } ?>">
|
||||
<a href="systeminfo.php"><i class="fa fa-fw fa-info-circle"></i> <span><?= lang('Navigation_SystemInfo');?></span></a>
|
||||
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "",
|
||||
"Device_Title": "",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "",
|
||||
"Donations_Platforms": "",
|
||||
"Donations_Text": "",
|
||||
"Donations_Title": "",
|
||||
"ENABLE_PLUGINS_description": "",
|
||||
"ENABLE_PLUGINS_name": "",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "",
|
||||
"Maintenance_Tool_ExportCSV_noti": "",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"About_Design": "Dissenyat per:",
|
||||
"About_Exit": "Sortir",
|
||||
"About_Title": "Escàner de seguretat de xarxa i marc de notificacions",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_AppEventProcessed": "Processat",
|
||||
"AppEvents_DateTimeCreated": "Logged",
|
||||
"AppEvents_Extra": "Extra",
|
||||
"AppEvents_GUID": "GUID d'esdeveniments d'Aplicació",
|
||||
@@ -22,7 +22,7 @@
|
||||
"AppEvents_ObjectPlugin": "Plugin enllaçat",
|
||||
"AppEvents_ObjectPrimaryID": "ID primari",
|
||||
"AppEvents_ObjectSecondaryID": "ID secundari",
|
||||
"AppEvents_ObjectStatus": "Estat (temps del registre)",
|
||||
"AppEvents_ObjectStatus": "Registre d'estat",
|
||||
"AppEvents_ObjectStatusColumn": "Columna d'estat",
|
||||
"AppEvents_ObjectType": "Tipus d'objecte",
|
||||
"AppEvents_Plugin": "Plugin",
|
||||
@@ -225,7 +225,7 @@
|
||||
"Device_TableHead_Name": "Nom",
|
||||
"Device_TableHead_NetworkSite": "Network Site",
|
||||
"Device_TableHead_Owner": "Propietari",
|
||||
"Device_TableHead_Parent_MAC": "MAC del node pare",
|
||||
"Device_TableHead_Parent_MAC": "Node pare de xarxa",
|
||||
"Device_TableHead_Port": "Port",
|
||||
"Device_TableHead_PresentLastScan": "Presència",
|
||||
"Device_TableHead_RowID": "ID de fila",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "Tot",
|
||||
"Device_Title": "Dispositius",
|
||||
"Devices_Filters": "Filtres",
|
||||
"Donations_Others": "Altres",
|
||||
"Donations_Platforms": "Plataformes patrocinadores",
|
||||
"Donations_Text": "Hola 👋! </br> Gràcies per fer clic en aquest element de menú 😅 </br> </br> Estic intentant recollir algunes donacions per fer un millor programari. També, m'ajudaria per cremar-me, i així recolzar aquesta aplicació més temps. Qualsevol petit (recurrent o no) patrocini em farà posar més esforç a aquesta aplicació. </br> M'agradaria escurçar la meva setmana de feina i en el temps restant enfocar-me en el NetAlertX. Així rebries més funcionalitat, una aplicació més neta i menys bugs. </br> </br> Gràcies per llegir-ho - Agraeixo qualsevol suport ❤🙏 </br> </br> TL;DR: Pel teu suport reps: </br> </br> <ul><li>Actualitzacions regulars per seguir les vostres dades i mantenir la família segura 🔄</li><li>Menys bugs 🐛🔫</li><li>Millor i més funcionalitat➕</li><li>Que no m'arribi el \"burn out\" 🔥🤯</li><li>Menys actualitzacions d'emergència 💨</li><li>Millors documentacions📚</li><li>Suport més ràpid i millor amb les incidències 🆘</li></ul> </br> 📧Correu electrònic <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> si vols contactar o si hauria d'afegir altres programes de patrocini. </br>",
|
||||
"Donations_Title": "Donacions",
|
||||
"ENABLE_PLUGINS_description": "Habilita la <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">connectors</a> funcionalitat. Carregar els connectors requereix més recursos de maquinari així podries voler desactivar-los en un sistema de baixos recursos.",
|
||||
"ENABLE_PLUGINS_name": "Activa els connectors(Plugins)",
|
||||
"ENCRYPTION_KEY_description": "Clau de xifrat de dades.",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Eines de manteniment",
|
||||
"Maintenance_Tool_DownloadConfig": "Exportació de paràmetres",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Descarregueu una còpia de seguretat completa de la vostra configuració de configuració emmagatzemada al fitxer <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Exportació de fluxos de treball",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Descarregueu una còpia de seguretat completa dels vostres fluxos de treball emmagatzemats en el fitxer <code>workflows.json</code>.",
|
||||
"Maintenance_Tool_ExportCSV": "CSV Exportació de dispositius",
|
||||
"Maintenance_Tool_ExportCSV_noti": "CSV Exportació",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Estàs segur que vols generar un fitxer CSV?",
|
||||
@@ -465,7 +463,7 @@
|
||||
"NETWORK_DEVICE_TYPES_description": "Quins tipus de dispositius es poden utilitzar com a dispositius de xarxa a la vista \"xarxa\". El tipus de dispositiu ha de coincidir exactament amb la configuració <code>Tipus</code> dels detalls de dispositiu. Afegir-ho al dispositiu fent servir el botó <code>+</code>. No elimini els tipus existents, només afegir-ne nous.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Tipus de dispositiu de xarxa",
|
||||
"Navigation_About": "Sobre",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "Esdeveniments de l'Aplicació",
|
||||
"Navigation_Devices": "Dispositius",
|
||||
"Navigation_Donations": "Donacions",
|
||||
"Navigation_Events": "Esdeveniments",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Auto-refresc UI",
|
||||
"VERSION_description": "Versió o valor timestamp per comprovar si l'aplicació va ser actualitzada.",
|
||||
"VERSION_name": "Versió o timestamp",
|
||||
"WF_Action_Add": "Afegir Acció",
|
||||
"WF_Action_field": "Camp",
|
||||
"WF_Action_type": "Tipus",
|
||||
"WF_Action_value": "Valor",
|
||||
"WF_Actions": "Accions",
|
||||
"WF_Add": "Afegeix fluix de treball",
|
||||
"WF_Add_Condition": "Afegeix Condició",
|
||||
"WF_Add_Group": "Afegir Grup",
|
||||
"WF_Condition_field": "Camp",
|
||||
"WF_Condition_operator": "Operador",
|
||||
"WF_Condition_value": "Valor",
|
||||
"WF_Conditions": "Condicions",
|
||||
"WF_Conditions_logic_rules": "Regles de lògica",
|
||||
"WF_Duplicate": "Flux de treball duplicat",
|
||||
"WF_Enabled": "Flux de treball activat",
|
||||
"WF_Export": "Exportar fluix de treball",
|
||||
"WF_Export_Copy": "Copiar el flux de treball següent i importar-lo on sigui necessari.",
|
||||
"WF_Import": "Importar fluix de treball",
|
||||
"WF_Import_Copy": "Enganxeu el flux de treball que heu copiat prèviament.",
|
||||
"WF_Name": "Nom del flux de treball",
|
||||
"WF_Remove": "Eliminar fluix de treball",
|
||||
"WF_Remove_Copy": "Vols eliminar aquest flux de treball?",
|
||||
"WF_Save": "Desa els fluxos de treball",
|
||||
"WF_Trigger": "Disparador(Trigger)",
|
||||
"WF_Trigger_event_type": "Tipus d'esdeveniment",
|
||||
"WF_Trigger_type": "Tipus de disparador",
|
||||
"add_icon_event_icon": "fa-square-plus",
|
||||
"add_icon_event_tooltip": "Afegir nova icona",
|
||||
"add_option_event_icon": "fa-square-plus",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "Actualitza el valor sota. Sigues curós de seguir el format anterior. <b>No hi ha validació.</b>",
|
||||
"test_event_icon": "fa-vial-circle-check",
|
||||
"test_event_tooltip": "Deseu els canvis primer abans de comprovar la configuració."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
"API_CUSTOM_SQL_description": "",
|
||||
"API_CUSTOM_SQL_name": "",
|
||||
"API_TOKEN_description": "",
|
||||
"API_TOKEN_name": "",
|
||||
"API_display_name": "",
|
||||
"API_icon": "",
|
||||
"API_TOKEN_name": "API token",
|
||||
"API_display_name": "API",
|
||||
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
|
||||
"About_Design": "",
|
||||
"About_Exit": "",
|
||||
"About_Title": "",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_DateTimeCreated": "",
|
||||
"AppEvents_Extra": "",
|
||||
"AppEvents_AppEventProcessed": "Zpracováno",
|
||||
"AppEvents_DateTimeCreated": "Zalogováno",
|
||||
"AppEvents_Extra": "Extra",
|
||||
"AppEvents_GUID": "",
|
||||
"AppEvents_Helper1": "",
|
||||
"AppEvents_Helper2": "",
|
||||
"AppEvents_Helper3": "",
|
||||
"AppEvents_ObjectForeignKey": "",
|
||||
"AppEvents_ObjectIndex": "",
|
||||
"AppEvents_ObjectForeignKey": "Cizí klíč",
|
||||
"AppEvents_ObjectIndex": "Index",
|
||||
"AppEvents_ObjectIsArchived": "",
|
||||
"AppEvents_ObjectIsNew": "",
|
||||
"AppEvents_ObjectPlugin": "",
|
||||
"AppEvents_ObjectPrimaryID": "",
|
||||
"AppEvents_ObjectSecondaryID": "",
|
||||
"AppEvents_ObjectPrimaryID": "Primární ID",
|
||||
"AppEvents_ObjectSecondaryID": "Sekundární ID",
|
||||
"AppEvents_ObjectStatus": "",
|
||||
"AppEvents_ObjectStatusColumn": "",
|
||||
"AppEvents_ObjectType": "",
|
||||
@@ -29,7 +29,7 @@
|
||||
"AppEvents_Type": "",
|
||||
"BackDevDetail_Actions_Ask_Run": "",
|
||||
"BackDevDetail_Actions_Not_Registered": "",
|
||||
"BackDevDetail_Actions_Title_Run": "",
|
||||
"BackDevDetail_Actions_Title_Run": "Spustit akci",
|
||||
"BackDevDetail_Copy_Ask": "",
|
||||
"BackDevDetail_Copy_Title": "",
|
||||
"BackDevDetail_Tools_WOL_error": "",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "",
|
||||
"Device_Title": "",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "",
|
||||
"Donations_Platforms": "",
|
||||
"Donations_Text": "",
|
||||
"Donations_Title": "",
|
||||
"ENABLE_PLUGINS_description": "",
|
||||
"ENABLE_PLUGINS_name": "",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "",
|
||||
"Maintenance_Tool_ExportCSV_noti": "",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "",
|
||||
"test_event_icon": "",
|
||||
"test_event_tooltip": ""
|
||||
}
|
||||
}
|
||||
|
||||
66
front/php/templates/language/de_de.json
Executable file → Normal file
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"API_CUSTOM_SQL_description": "Benutzerdefinierte SQL-Abfrage, welche eine JSON-Datei generiert und diese mit dem <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\">Dateiendpunkt <code>table_custom_endpoint.json</code></a> zur Verfügung stellt.",
|
||||
"API_CUSTOM_SQL_name": "Benutzerdefinierte SQL-Abfrage",
|
||||
"API_TOKEN_description": "API-Token zur Absicherung der Kommunikation – Sie können einen generieren oder einen beliebigen Wert eingeben. Er wird im Anfrage-Header übermittelt. Wird im <code>SYNC</code>-Plugin und GraphQL-Server verwendet.",
|
||||
"API_TOKEN_description": "API-Token zur Absicherung der Kommunikation – Sie können einen neuen generieren oder einen beliebigen Wert eingeben. Er wird im Anfrage-Header übermittelt und zum Beispiel im <code>SYNC</code>-Plugin, im GraphQL-Server und in anderen API Endpunkten verwendet (siehe auch <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md\" target=\"_blank\">API Dokumentation)</a>..",
|
||||
"API_TOKEN_name": "API-Schlüssel",
|
||||
"API_display_name": "API",
|
||||
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
|
||||
@@ -16,8 +16,8 @@
|
||||
"About_Design": "Entworfen für:",
|
||||
"About_Exit": "Abmelden",
|
||||
"About_Title": "Netzwerksicherheitsscanner und Benachrichtigungsframework",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_DateTimeCreated": "protokolliert",
|
||||
"AppEvents_AppEventProcessed": "Verarbeitet",
|
||||
"AppEvents_DateTimeCreated": "Protokolliert",
|
||||
"AppEvents_Extra": "Extra",
|
||||
"AppEvents_GUID": "Anwendungsereignis-GUID",
|
||||
"AppEvents_Helper1": "Helfer 1",
|
||||
@@ -30,7 +30,7 @@
|
||||
"AppEvents_ObjectPlugin": "Verknüpfte Plugins",
|
||||
"AppEvents_ObjectPrimaryID": "Primär ID",
|
||||
"AppEvents_ObjectSecondaryID": "Sekundär ID",
|
||||
"AppEvents_ObjectStatus": "Status (zum Log-Zeitpunkt)",
|
||||
"AppEvents_ObjectStatus": "Protokollierter Status",
|
||||
"AppEvents_ObjectStatusColumn": "Statusspalte",
|
||||
"AppEvents_ObjectType": "Objekttyp",
|
||||
"AppEvents_Plugin": "Plugin",
|
||||
@@ -61,7 +61,7 @@
|
||||
"BackDevices_DBTools_ImportCSVError": "Die CSV-Datei konnte nicht importiert werden. Stellen Sie sicher, dass das Format korrekt ist.",
|
||||
"BackDevices_DBTools_ImportCSVMissing": "Die CSV-Datei konnte nicht in <b>/config/devices.csv</b> gefunden werden.",
|
||||
"BackDevices_DBTools_Purge": "Die ältesten Backups wurden gelöscht",
|
||||
"BackDevices_DBTools_UpdDev": "Gerät wurde erfolgreich aktualisiert",
|
||||
"BackDevices_DBTools_UpdDev": "Gerät wurde erfolgreich aktualisiert. Es kann etwas dauern bis die Übersicht neu geladen ist, wenn ein Scan aktiv ist.",
|
||||
"BackDevices_DBTools_UpdDevError": "Fehler beim Aktualisieren des Gerätes",
|
||||
"BackDevices_DBTools_Upgrade": "Datenbank wurde erfolgreich aktualisiert",
|
||||
"BackDevices_DBTools_UpgradeError": "Fehler beim Aktualisieren der Datenbank",
|
||||
@@ -76,7 +76,7 @@
|
||||
"CustProps_cant_remove": "Kann nicht entfernt werden, es wird mindestens eine Eigenschaft benötigt.",
|
||||
"DAYS_TO_KEEP_EVENTS_description": "Dies ist eine Wartungseinstellung. Spezifiziert wie viele Tage Events gespeichert bleiben. Alle älteren Events werden periodisch gelöscht. Wird auch auf die Plugins History angewendet.",
|
||||
"DAYS_TO_KEEP_EVENTS_name": "Ereignisse löschen, die älter sind als",
|
||||
"DISCOVER_PLUGINS_description": "Deaktiviere diese Option um die Initialisierung und Speicherdauer der Einstellungen zu verringern. Wenn es deaktiviert ist, können keine Plugins gefunden oder neue Plugins zu den vorhandenen hinzugefügt werden.",
|
||||
"DISCOVER_PLUGINS_description": "Deaktiviere diese Option, um Initialisierung und Speichern der Einstellungen zu beschleunigen. Wenn es deaktiviert ist, werden keine neuen Plugins gefunden und es können keine manuell hinzugefügt werden.",
|
||||
"DISCOVER_PLUGINS_name": "Entdecke Erweiterungen",
|
||||
"DevDetail_Copy_Device_Title": "Details von Gerät kopieren",
|
||||
"DevDetail_Copy_Device_Tooltip": "Details vom Gerät aus der Dropdown-Liste kopieren. Alles auf dieser Seite wird überschrieben",
|
||||
@@ -237,7 +237,7 @@
|
||||
"Device_TableHead_Name": "Name",
|
||||
"Device_TableHead_NetworkSite": "Netzwerkseite",
|
||||
"Device_TableHead_Owner": "Eigentümer",
|
||||
"Device_TableHead_Parent_MAC": "Übergeordnete MAC",
|
||||
"Device_TableHead_Parent_MAC": "Übergeordneter Netzwerkknoten",
|
||||
"Device_TableHead_Port": "Port",
|
||||
"Device_TableHead_PresentLastScan": "Anwesenheit",
|
||||
"Device_TableHead_RowID": "Zeilen ID",
|
||||
@@ -256,10 +256,6 @@
|
||||
"Device_Tablelenght_all": "Alle",
|
||||
"Device_Title": "Geräte",
|
||||
"Devices_Filters": "Filter",
|
||||
"Donations_Others": "Andere",
|
||||
"Donations_Platforms": "Sponsor-Platformen",
|
||||
"Donations_Text": "Hey 👋! </br> Thanks for clicking on this menu item 😅 </br> </br> I'm trying to collect some donations to make you better software. Also, it would help me not to get burned out. Me burning out might mean end of support for this app. Any small (recurring or not) sponsorship makes me want ot put more effort into this app. I don't want to lock features (new plugins) behind paywalls 🔐. </br> Currently, I'm waking up 2h before work so I contribute to the app a bit. If I had some recurring income I could shorten my workweek and in the remaining time fully focus on NetAlertX. You'd get more functionality, a more polished app and less bugs. </br> </br> Thanks for reading - I'm super grateful for any support ❤🙏 </br> </br> TL;DR: By supporting me you get: </br> </br> <ul><li>Regular updates to keep your data and family safe 🔄</li><li>Less bugs 🐛🔫</li><li>Better and more functionality➕</li><li>I don't get burned out 🔥🤯</li><li>Less rushed releases 💨</li><li>Better docs📚</li><li>Quicker and better support with issues 🆘</li><li>Less grumpy me 😄</li></ul> </br> 📧Email me to <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> if you want to get in touch or if I should add other sponsorship platforms. </br>",
|
||||
"Donations_Title": "Spenden",
|
||||
"ENABLE_PLUGINS_description": "NOTUSED Enables the <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a> functionality. Loading plugins requires more hardware resources so you might want to disable them on low-powered system.",
|
||||
"ENABLE_PLUGINS_name": "NOTUSED Enable Plugins",
|
||||
"ENCRYPTION_KEY_description": "Schlüssel zur Datenverschlüsselung.",
|
||||
@@ -299,7 +295,7 @@
|
||||
"Events_Tablelenght": "Zeige _MENU_ Einträge",
|
||||
"Events_Tablelenght_all": "Alle",
|
||||
"Events_Title": "Ereignisse",
|
||||
"GRAPHQL_PORT_description": "Die Portnummer des GraphQL-Servers.",
|
||||
"GRAPHQL_PORT_description": "Die Portnummer des GraphQL-Servers. Stellen Sie sicher, dass dieser Port von keiner anderen Anwendung oder NetAlertX Instanz verwendet wird.",
|
||||
"GRAPHQL_PORT_name": "GraphQL-Port",
|
||||
"Gen_Action": "Action",
|
||||
"Gen_Add": "Hinzufügen",
|
||||
@@ -345,7 +341,7 @@
|
||||
"Gen_Warning": "Warnung",
|
||||
"Gen_Work_In_Progress": "Keine Finalversion, feedback bitte unter: https://github.com/jokob-sk/NetAlertX/issues",
|
||||
"Gen_create_new_device": "Neues Gerät",
|
||||
"Gen_create_new_device_info": "",
|
||||
"Gen_create_new_device_info": "Geräte werden normalerweise über <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">Plugins</a> gefunden. In Ausnahmefällen kann es nötig sein, sie manuell hinzuzufügen. Konkrete Szenarien sind in der <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">Dokumentation über entfernte Netzwerke</a> zu finden.",
|
||||
"General_display_name": "Allgemein",
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Dies ist eine Wartungseinstellung <b>DELETING devices</b>. Wenn aktiviert (<code>0</code> bedeutet deaktiviert), werden als <b>\"Neues Gerät\"</b> markierte Geräte gelöscht, wenn ihre <b>erste Sitzung</b> länger her ist als in dieser Einstellung angegeben. Verwenden Sie diese Einstellung, wenn Sie <b>Neue Geräte</b> nach <code>X</code> Stunden automatisch löschen wollen.",
|
||||
@@ -387,12 +383,14 @@
|
||||
"MQTT_icon": "<i class=\"fa fa-square-rss\"></i>",
|
||||
"Maint_PurgeLog": "Protokoll bereinigen",
|
||||
"Maint_RestartServer": "Server neu starten",
|
||||
"Maint_Restart_Server_noti_text": "",
|
||||
"Maint_Restart_Server_noti_text": "Soll der Backend-Server wirklich neu gestartet werden? Das könnte Instabilitäten verursachen. Vorher ein Backup erstellen. <br/><br/>Hinweis: Das kann einige Minuten dauern.",
|
||||
"Maintenance_Running_Version": "Installierte Version",
|
||||
"Maintenance_Status": "Status",
|
||||
"Maintenance_Title": "Wartungswerkzeuge",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig": "Einstellungen exportieren",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "CSV Export",
|
||||
"Maintenance_Tool_ExportCSV_noti": "CSV Export",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Sind Sie sich sicher, dass Sie die CSV-Datei erstellen wollen?",
|
||||
@@ -481,7 +479,7 @@
|
||||
"Maintenance_lang_selector_apply": "Übernehmen",
|
||||
"Maintenance_lang_selector_empty": "Sprache wählen",
|
||||
"Maintenance_lang_selector_lable": "Sprachauswahl",
|
||||
"Maintenance_lang_selector_text": "Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.",
|
||||
"Maintenance_lang_selector_text": "Die Änderung findet clientseitig statt, betrifft also nur den aktuellen Browser.",
|
||||
"Maintenance_new_version": "Eine neue Version ist vefügbar. Sieh dir die <a href=\"https://github.com/jokob-sk/NetAlertX/releases\" target=\"_blank\">Versionshinweise</a> an.",
|
||||
"Maintenance_themeselector_apply": "Übernehmen",
|
||||
"Maintenance_themeselector_empty": "Skin wählen",
|
||||
@@ -501,7 +499,7 @@
|
||||
"NTFY_display_name": "NTFY",
|
||||
"NTFY_icon": "<i class=\"fa fa-terminal\"></i>",
|
||||
"Navigation_About": "Über",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "App-Ereignisse",
|
||||
"Navigation_Devices": "Geräte",
|
||||
"Navigation_Donations": "Spenden",
|
||||
"Navigation_Events": "Ereignisse",
|
||||
@@ -751,12 +749,38 @@
|
||||
"WEBHOOK_SIZE_name": "Max payload size",
|
||||
"WEBHOOK_URL_description": "Target URL starting with <code>http://</code> or <code>https://</code>.",
|
||||
"WEBHOOK_URL_name": "Target URL",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "Aktionen",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "Bedingung hinzufügen",
|
||||
"WF_Add_Group": "Gruppe hinzufügen",
|
||||
"WF_Condition_field": "Feld",
|
||||
"WF_Condition_operator": "Betreiber",
|
||||
"WF_Condition_value": "Wert",
|
||||
"WF_Conditions": "Bedingungen",
|
||||
"WF_Conditions_logic_rules": "Logikregeln",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "Auslöser",
|
||||
"WF_Trigger_event_type": "Ereignistyp",
|
||||
"WF_Trigger_type": "Auslösertyp",
|
||||
"Webhooks_display_name": "Webhooks",
|
||||
"Webhooks_icon": "<i class=\"fa fa-circle-nodes\"></i>",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_icon_event_tooltip": "Neues Symbol hinzufügen",
|
||||
"add_option_event_icon": "",
|
||||
"add_option_event_tooltip": "",
|
||||
"add_option_event_tooltip": "Neuen Wert hinzufügen",
|
||||
"copy_icons_event_icon": "",
|
||||
"copy_icons_event_tooltip": "Icons aller Geräte mit demselben Gerätetyp überschreiben",
|
||||
"devices_old": "Aktualisiert...",
|
||||
@@ -764,7 +788,7 @@
|
||||
"general_event_title": "",
|
||||
"go_to_node_event_icon": "",
|
||||
"go_to_node_event_tooltip": "",
|
||||
"new_version_available": "",
|
||||
"new_version_available": "Es ist eine neue Version verfügbar.",
|
||||
"report_guid": "",
|
||||
"report_guid_missing": "",
|
||||
"report_select_format": "Format auswählen:",
|
||||
@@ -799,4 +823,4 @@
|
||||
"settings_update_item_warning": "",
|
||||
"test_event_icon": "",
|
||||
"test_event_tooltip": "Speichere die Änderungen, bevor Sie die Einstellungen testen."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"AppEvents_ObjectPlugin": "Linked Plugin",
|
||||
"AppEvents_ObjectPrimaryID": "Primary ID",
|
||||
"AppEvents_ObjectSecondaryID": "Secondary ID",
|
||||
"AppEvents_ObjectStatus": "Status (at log time)",
|
||||
"AppEvents_ObjectStatus": "Logged Status",
|
||||
"AppEvents_ObjectStatusColumn": "Status column",
|
||||
"AppEvents_ObjectType": "Object Type",
|
||||
"AppEvents_Plugin": "Plugin",
|
||||
@@ -225,7 +225,7 @@
|
||||
"Device_TableHead_Name": "Name",
|
||||
"Device_TableHead_NetworkSite": "Network Site",
|
||||
"Device_TableHead_Owner": "Owner",
|
||||
"Device_TableHead_Parent_MAC": "Parent node MAC",
|
||||
"Device_TableHead_Parent_MAC": "Parent network node",
|
||||
"Device_TableHead_Port": "Port",
|
||||
"Device_TableHead_PresentLastScan": "Presence",
|
||||
"Device_TableHead_RowID": "Row ID",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "All",
|
||||
"Device_Title": "Devices",
|
||||
"Devices_Filters": "Filters",
|
||||
"Donations_Others": "Others",
|
||||
"Donations_Platforms": "Sponsor platforms",
|
||||
"Donations_Text": "Hey 👋! </br> Thanks for clicking on this menu item 😅 </br> </br> I'm trying to collect some donations to make you better software. Also, it would help me not to get burned out, so I can support this app longer. Any small (recurring or not) sponsorship makes me want to put more effort into this app. </br> I'd love to shorten my work week and in the remaining time fully focus on NetAlertX. You'd get more functionality, a more polished app and less bugs. </br> </br> Thanks for reading - I'm grateful for any support ❤🙏 </br> </br> TL;DR: By supporting me you get: </br> </br> <ul><li>Regular updates to keep your data and family safe 🔄</li><li>Less bugs 🐛🔫</li><li>Better and more functionality➕</li><li>I don't get burned out 🔥🤯</li><li>Less rushed releases 💨</li><li>Better docs📚</li><li>Quicker and better support with issues 🆘</li></ul> </br> 📧Email me to <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> if you want to get in touch or if I should add other sponsorship platforms. </br>",
|
||||
"Donations_Title": "Donations",
|
||||
"ENABLE_PLUGINS_description": "Enables the <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a> functionality. Loading plugins requires more hardware resources so you might want to disable them on low-powered system.",
|
||||
"ENABLE_PLUGINS_name": "Enable Plugins",
|
||||
"ENCRYPTION_KEY_description": "Data encryption key.",
|
||||
@@ -338,7 +334,7 @@
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "This is a maintenance setting <b>DELETING devices</b>. If enabled (<code>0</code> is disabled), devices marked as <b>New Device</b> will be deleted if their <b>First Session</b> time was older than the specified hours in this setting. Use this setting if you want to auto-delete <b>New Devices</b> after <code>X</code> hours.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Delete new devices after",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "This is a maintenance setting <b>DELETING devices</b>. If enabled (<code>0</code> is disabled), devices that are <b>Offline</b> and their <b>Last Offline</b> date time is older than the specified hours in this setting, will be deleted. Use this setting if you want to auto-delete <b>Offline Devices</b> after <code>X</code> hours being offline.",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "This is a maintenance setting <b>DELETING devices</b>. If enabled (<code>0</code> is disabled), devices that are <b>Offline</b> and their <b>Last Connection</b> date time is older than the specified hours in this setting, will be deleted. Use this setting if you want to auto-delete <b>Offline Devices</b> after <code>X</code> hours being offline.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Delete offline devices after",
|
||||
"LOADED_PLUGINS_description": "Which Plugins to load. Adding plugins might slow the application. Read more about which plugins need to be enabled, types, or scanning options in the <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins docs</a>. Unloaded plugins will lose your settings. Only <code>disabled</code> plugins can be unloaded.",
|
||||
"LOADED_PLUGINS_name": "Loaded plugins",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Maintenance tools",
|
||||
"Maintenance_Tool_DownloadConfig": "Settings Export",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Download a full backup of your Settings configuration stored in the <code>app.conf</code> file.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Workflows Export",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Download a full backup of your Workflows stored in the <code>workflows.json</code> file.",
|
||||
"Maintenance_Tool_ExportCSV": "Devices Export (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Devices Export (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Are you sure you want to generate a CSV file?",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Auto-refresh UI",
|
||||
"VERSION_description": "Version or timestamp helper value to check if app was upgraded.",
|
||||
"VERSION_name": "Version or timestamp",
|
||||
"WF_Action_Add": "Add Action",
|
||||
"WF_Action_field": "Field",
|
||||
"WF_Action_type": "Type",
|
||||
"WF_Action_value": "Value",
|
||||
"WF_Actions": "Actions",
|
||||
"WF_Add": "Add Workflow",
|
||||
"WF_Add_Condition": "Add Condition",
|
||||
"WF_Add_Group": "Add Group",
|
||||
"WF_Condition_field": "Field",
|
||||
"WF_Condition_operator": "Operator",
|
||||
"WF_Condition_value": "Value",
|
||||
"WF_Conditions": "Conditions",
|
||||
"WF_Conditions_logic_rules": "Logic rules",
|
||||
"WF_Duplicate": "Duplicate Workflow",
|
||||
"WF_Enabled": "Workflow enabled",
|
||||
"WF_Export": "Export Workflow",
|
||||
"WF_Export_Copy": "Copy the below workflow and import it where needed.",
|
||||
"WF_Import": "Import Workflow",
|
||||
"WF_Import_Copy": "Paste in the workflow you copied previously.",
|
||||
"WF_Name": "Workflow name",
|
||||
"WF_Remove": "Remove Workflow",
|
||||
"WF_Remove_Copy": "Do you want to remove this workflow?",
|
||||
"WF_Save": "Save Workflows",
|
||||
"WF_Trigger": "Trigger",
|
||||
"WF_Trigger_event_type": "Event type",
|
||||
"WF_Trigger_type": "Trigger type",
|
||||
"add_icon_event_icon": "fa-square-plus",
|
||||
"add_icon_event_tooltip": "Add new icon",
|
||||
"add_option_event_icon": "fa-square-plus",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"API_CUSTOM_SQL_description": "Puede especificar una consulta SQL personalizada que generará un archivo JSON y luego lo expondrá a través del <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\">archivo <code>table_custom_endpoint.json</code ></a>.",
|
||||
"API_CUSTOM_SQL_name": "Endpoint personalizado",
|
||||
"API_TOKEN_description": "Token de API para asegurar la comunicación, puede generar uno o introducir cualquier valor. Se envía en el encabezado de solicitud. Se utiliza en el plugin <code>SYNC</code> del servidor GraphQL.",
|
||||
"API_TOKEN_description": "Token de API para comunicación segura. Genere uno o introduzca cualquier valor. Se envía en el encabezado de la solicitud y se usa en el complemento <code>SYNC</code>, el servidor GraphQL y otros puntos de conexión de la API. Puede usar los puntos de conexión de la API para crear integraciones personalizadas, como se describe en la <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md\" target=\"_blank\">documentación de la API</a>.",
|
||||
"API_TOKEN_name": "Token de la API",
|
||||
"API_display_name": "API",
|
||||
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
|
||||
@@ -16,7 +16,7 @@
|
||||
"About_Design": "Diseñado para:",
|
||||
"About_Exit": "Salir",
|
||||
"About_Title": "Escáner de seguridad de la red y marco de notificaciones",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_AppEventProcessed": "Procesado",
|
||||
"AppEvents_DateTimeCreated": "Registrado",
|
||||
"AppEvents_Extra": "Extra",
|
||||
"AppEvents_GUID": "GUID del evento de aplicación",
|
||||
@@ -30,7 +30,7 @@
|
||||
"AppEvents_ObjectPlugin": "Complemento vinculado",
|
||||
"AppEvents_ObjectPrimaryID": "ID principal",
|
||||
"AppEvents_ObjectSecondaryID": "ID secundario",
|
||||
"AppEvents_ObjectStatus": "Estado (en el momento del registro)",
|
||||
"AppEvents_ObjectStatus": "Estado registrado",
|
||||
"AppEvents_ObjectStatusColumn": "Columna de estado",
|
||||
"AppEvents_ObjectType": "Tipo de objeto",
|
||||
"AppEvents_Plugin": "Plugin",
|
||||
@@ -59,7 +59,7 @@
|
||||
"BackDevices_DBTools_ImportCSVError": "El archivo CSV no pudo ser importado. Asegúrate de que el formato es correcto.",
|
||||
"BackDevices_DBTools_ImportCSVMissing": "El archivo CSV no se pudo encontrar en <b>/config/devices.csv.</b>",
|
||||
"BackDevices_DBTools_Purge": "Las copias de seguridad más antiguas fueron eliminadas",
|
||||
"BackDevices_DBTools_UpdDev": "Dispositivo actualizado con éxito",
|
||||
"BackDevices_DBTools_UpdDev": "Dispositivo actualizado con éxito. Es posible que la lista de dispositivos principales necesite algún tiempo para recargarse si hay un escaneo en progreso.",
|
||||
"BackDevices_DBTools_UpdDevError": "Error al actualizar el dispositivo",
|
||||
"BackDevices_DBTools_Upgrade": "Base de datos actualizada correctamente",
|
||||
"BackDevices_DBTools_UpgradeError": "Falló la actualización de la base de datos",
|
||||
@@ -71,15 +71,15 @@
|
||||
"BackDevices_darkmode_enabled": "Darkmode Activado",
|
||||
"CLEAR_NEW_FLAG_description": "Si está habilitado (<code>0</code> está desactivado), los dispositivos marcados como <b>Nuevo dispositivo</b> se desmarcarán si el límite de tiempo (especificado en horas) excede su tiempo de <b>primera sesión</b>.",
|
||||
"CLEAR_NEW_FLAG_name": "Eliminar la nueva bandera",
|
||||
"CustProps_cant_remove": "",
|
||||
"CustProps_cant_remove": "No se puede eliminar, al menos una propiedad es requerida.",
|
||||
"DAYS_TO_KEEP_EVENTS_description": "Esta es una configuración de mantenimiento. Esto especifica el número de días de entradas de eventos que se guardarán. Todos los eventos anteriores se eliminarán periódicamente.",
|
||||
"DAYS_TO_KEEP_EVENTS_name": "Eliminar eventos anteriores a",
|
||||
"DISCOVER_PLUGINS_description": "Desactive esta opción para acelerar la inicialización y el ahorro de ajustes. Cuando está desactivado, los plugins no se descubren y no puede añadir nuevos plugins a la configuración <code>LOADED_PLUGINS</code>.",
|
||||
"DISCOVER_PLUGINS_name": "Descubrir plugins",
|
||||
"DevDetail_Copy_Device_Title": "Copiar detalles del dispositivo",
|
||||
"DevDetail_Copy_Device_Tooltip": "Copiar detalles del dispositivo de la lista desplegable. Todo en esta página se sobrescribirá",
|
||||
"DevDetail_CustomProperties_Title": "",
|
||||
"DevDetail_CustomProps_reset_info": "",
|
||||
"DevDetail_CustomProperties_Title": "Propiedades personalizadas",
|
||||
"DevDetail_CustomProps_reset_info": "Esto eliminará sus propiedades personalizadas en este dispositivo y las reiniciará a sus valores por defecto.",
|
||||
"DevDetail_DisplayFields_Title": "Mostrar",
|
||||
"DevDetail_EveandAl_AlertAllEvents": "Notificaciones de eventos",
|
||||
"DevDetail_EveandAl_AlertDown": "Alerta de caída",
|
||||
@@ -196,7 +196,7 @@
|
||||
"DevDetail_button_Delete": "Eliminar dispositivo",
|
||||
"DevDetail_button_DeleteEvents": "Eliminar eventos",
|
||||
"DevDetail_button_DeleteEvents_Warning": "¿Desea eliminar todos los eventos de este dispositivo?<br><br>(se eliminarán el <b>Historial de eventos</b> y las <b>Sesiones</b>, y puede ayudar en el caso de notificaciones constantes)",
|
||||
"DevDetail_button_Delete_ask": "",
|
||||
"DevDetail_button_Delete_ask": "¿Está seguro que desea eliminar este dispositivo? También puede archivarla.",
|
||||
"DevDetail_button_OverwriteIcons": "Sobreescribir iconos",
|
||||
"DevDetail_button_OverwriteIcons_Tooltip": "Sobreescribir los iconos de todos los dispositivos con el mismo tipo",
|
||||
"DevDetail_button_OverwriteIcons_Warning": "¿Sobreescribir todos los iconos de todos los dispositivos con el mismo tipo que el dispositivo actual?",
|
||||
@@ -220,7 +220,7 @@
|
||||
"Device_Shortcut_OnlineChart": "Presencia del dispositivo a lo largo del tiempo",
|
||||
"Device_TableHead_AlertDown": "Alerta desactivada",
|
||||
"Device_TableHead_Connected_Devices": "Conexiones",
|
||||
"Device_TableHead_CustomProps": "",
|
||||
"Device_TableHead_CustomProps": "Propiedades / Acciones",
|
||||
"Device_TableHead_Favorite": "Favorito",
|
||||
"Device_TableHead_FirstSession": "1ra. sesión",
|
||||
"Device_TableHead_GUID": "GUID",
|
||||
@@ -235,7 +235,7 @@
|
||||
"Device_TableHead_Name": "Nombre",
|
||||
"Device_TableHead_NetworkSite": "Lugar de la red",
|
||||
"Device_TableHead_Owner": "Propietario",
|
||||
"Device_TableHead_Parent_MAC": "Nodo principal de la MAC",
|
||||
"Device_TableHead_Parent_MAC": "Nodo principal de la red",
|
||||
"Device_TableHead_Port": "Puerto",
|
||||
"Device_TableHead_PresentLastScan": "Historial",
|
||||
"Device_TableHead_RowID": "ID de fila",
|
||||
@@ -253,15 +253,11 @@
|
||||
"Device_Tablelenght": "Mostrar _MENU_ entradas",
|
||||
"Device_Tablelenght_all": "Todos",
|
||||
"Device_Title": "Dispositivos",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "Otros",
|
||||
"Donations_Platforms": "Plataforma de patrocinadores",
|
||||
"Donations_Text": "¡Hola! 👋 </br> Gracias por hacer clic en este elemento 😅 del menú </br> </br>, estoy tratando de recolectar algunas donaciones para mejorar el software. Además, me ayudaría a no quemarse, por lo que puedo apoyar esta aplicación por más tiempo. Cualquier pequeño patrocinio (recurrente o no) me hace querer esforzarme más en esta aplicación. </br> Me encantaría acortar mi semana de trabajo y en el tiempo que me queda centrarme por completo en NetAlertX. Obtendrías más funcionalidad, una aplicación más pulida y menos errores. </br> </br> Gracias por leer, agradezco cualquier apoyo ❤🙏 </br> </br> TL; DR: Al apoyarme, obtienes: </br> </br> <ul><li>Actualizaciones periódicas para mantener tus datos y tu familia seguros 🔄</li><li>Menos errores 🐛🔫</li><li>Mejor y más funcionalidad➕</li><li>No me quemo 🔥🤯</li><li>Lanzamientos 💨menos apresurados</li> <li>Mejores documentos📚</li><li>Soporte más rápido y mejor con problemas 🆘</li></ul> </br> 📧Envíame un correo electrónico a <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> si quieres ponerte en contacto o si debo añadir otras plataformas de patrocinio. </br>",
|
||||
"Donations_Title": "Donaciones",
|
||||
"Devices_Filters": "Filtros",
|
||||
"ENABLE_PLUGINS_description": "Habilita la funcionalidad de los <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">complementos</a>. Cargar los complementos requiere más recursos de hardware, así que quizás quieras desactivarlo en hardware poco potente.",
|
||||
"ENABLE_PLUGINS_name": "Habilitar complementos",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
"ENCRYPTION_KEY_name": "",
|
||||
"ENCRYPTION_KEY_description": "Llave de cifrado de datos.",
|
||||
"ENCRYPTION_KEY_name": "Llave de cifrado",
|
||||
"Email_display_name": "Email",
|
||||
"Email_icon": "<i class=\"fa fa-at\"></i>",
|
||||
"Events_Loading": "Cargando...",
|
||||
@@ -285,7 +281,7 @@
|
||||
"Events_TableHead_Disconnection": "Desconexión",
|
||||
"Events_TableHead_Duration": "Duración",
|
||||
"Events_TableHead_DurationOrder": "Orden de duración",
|
||||
"Events_TableHead_EventType": "Tipo de evento",
|
||||
"Events_TableHead_EventType": "Tipo de Evento",
|
||||
"Events_TableHead_IP": "Dirección IP",
|
||||
"Events_TableHead_IPOrder": "Orden de IP",
|
||||
"Events_TableHead_Order": "Ordenar",
|
||||
@@ -297,7 +293,7 @@
|
||||
"Events_Tablelenght": "Mostrando entradas del MENÚ",
|
||||
"Events_Tablelenght_all": "Todos",
|
||||
"Events_Title": "Eventos",
|
||||
"GRAPHQL_PORT_description": "El número de puerto del servidor GraphQL.",
|
||||
"GRAPHQL_PORT_description": "El número de puerto del servidor GraphQL. Asegúrese de que el puerto sea único en todas sus aplicaciones en este host y en las instancias de NetAlertX.",
|
||||
"GRAPHQL_PORT_name": "Puerto GraphQL",
|
||||
"Gen_Action": "Acción",
|
||||
"Gen_Add": "Añadir",
|
||||
@@ -324,7 +320,7 @@
|
||||
"Gen_ReadDocs": "Lee más en los documentos.",
|
||||
"Gen_Remove_All": "Quitar todo",
|
||||
"Gen_Remove_Last": "Quitar el último",
|
||||
"Gen_Reset": "",
|
||||
"Gen_Reset": "Reiniciar",
|
||||
"Gen_Restore": "Ejecutar restauración",
|
||||
"Gen_Run": "Ejecutar",
|
||||
"Gen_Save": "Guardar",
|
||||
@@ -339,7 +335,7 @@
|
||||
"Gen_Upd_Fail": "Fallo al actualizar",
|
||||
"Gen_Update": "Actualizar",
|
||||
"Gen_Update_Value": "Actualizar valor",
|
||||
"Gen_ValidIcon": "",
|
||||
"Gen_ValidIcon": "<i class=\"fa-solid fa-chevron-right \"></i>",
|
||||
"Gen_Warning": "Advertencia",
|
||||
"Gen_Work_In_Progress": "Trabajo en curso, un buen momento para hacer comentarios en https://github.com/jokob-sk/NetAlertX/issues",
|
||||
"Gen_create_new_device": "Nuevo dispositivo",
|
||||
@@ -389,23 +385,25 @@
|
||||
"Maintenance_Running_Version": "Versión instalada",
|
||||
"Maintenance_Status": "Situación",
|
||||
"Maintenance_Title": "Herramientas de mantenimiento",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "Exportación CSV",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Exportación CSV",
|
||||
"Maintenance_Tool_DownloadConfig": "Exportación de configuraciones",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Descargue una copia de seguridad completa de su configuración de ajustes almacenada en el archivo <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Exportación de flujos de trabajo",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Descargue una copia de seguridad completa de sus flujos de trabajo almacenados en el archivo <code>workflows.json</code>.",
|
||||
"Maintenance_Tool_ExportCSV": "Exportación de dispositivos (CSV)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Exportación de dispositivos (CSV)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "¿Está seguro de que quiere generar un archivo CSV?",
|
||||
"Maintenance_Tool_ExportCSV_text": "Genere un archivo CSV (valor separado por comas) que contenga la lista de Dispositivos incluyendo las relaciones de red entre los Nodos de red y los dispositivos conectados. También puedes activarlo accediendo a esta URL <code>your NetAlertX url/php/server/devices.php?action=ExportCSV</code> o activando el plugin <a href=\"settings.php#CSVBCKP_header\">Copia de seguridad CSV</a>.",
|
||||
"Maintenance_Tool_ImportCSV": "Importación CSV",
|
||||
"Maintenance_Tool_ImportCSV_noti": "Importación CSV",
|
||||
"Maintenance_Tool_ExportCSV_text": "Genere un archivo CSV (valor separado por comas) que contenga la lista de Dispositivos incluyendo las relaciones de red entre los Nodos de red y los dispositivos conectados. También puedes activarlo accediendo a esta URL <code>your_NetAlertX_url/php/server/devices.php?action=ExportCSV</code> o activando el plugin <a href=\"settings.php#CSVBCKP_header\">Copia de seguridad CSV</a>.",
|
||||
"Maintenance_Tool_ImportCSV": "Importación de dispositivos (CSV)",
|
||||
"Maintenance_Tool_ImportCSV_noti": "Importación de dispositivos (CSV)",
|
||||
"Maintenance_Tool_ImportCSV_noti_text": "¿Estás seguro de que quieres importar el archivo CSV? Esto <b>sobrescribirá</b> completamente los dispositivos en su base de datos.",
|
||||
"Maintenance_Tool_ImportCSV_text": "Antes de usar esta función, haga una copia de seguridad. Importe un archivo CSV (valor separado por comas) que contiene la lista de dispositivos, incluidas las relaciones de red entre nodos de red y dispositivos conectados. Para hacer eso, coloque el archivo CSV llamado <b> devices.csv </b> en su carpeta <b>/config </b>.",
|
||||
"Maintenance_Tool_ImportConfig_noti": "",
|
||||
"Maintenance_Tool_ImportPastedCSV": "Importar CSV (Pegar)",
|
||||
"Maintenance_Tool_ImportConfig_noti": "Importar ajustes (app.conf)",
|
||||
"Maintenance_Tool_ImportPastedCSV": "Importar dispositivos (CSV) (Pegar)",
|
||||
"Maintenance_Tool_ImportPastedCSV_noti_text": "¿Seguro que desea importar el CSV pegado? Esto <b>sobrescribirá</b> completamente los dispositivos en su base de datos.",
|
||||
"Maintenance_Tool_ImportPastedCSV_text": "Antes de usar esta función, por favor haga una copia de seguridad. Importar un archivo CSV (valor separado por comas) que contiene la lista de Dispositivos incluyendo las relaciones de red entre los Nodos de red y los dispositivos conectados.",
|
||||
"Maintenance_Tool_ImportPastedConfig": "",
|
||||
"Maintenance_Tool_ImportPastedConfig_noti_text": "",
|
||||
"Maintenance_Tool_ImportPastedConfig_text": "",
|
||||
"Maintenance_Tool_ImportPastedConfig": "Importar ajustes (pegar)",
|
||||
"Maintenance_Tool_ImportPastedConfig_noti_text": "¿Seguro que quieres importar la configuración pegada? Esto <b>sobrescribirá</b> por completo el archivo <code>app.conf</code>.",
|
||||
"Maintenance_Tool_ImportPastedConfig_text": "Importa el archivo <code>app.conf</code> que contiene toda la configuración de la aplicación. Es recomendable descargar primero el archivo <code>app.conf</code> actual con la <b>Exportación de configuración</b>.",
|
||||
"Maintenance_Tool_arpscansw": "Activar arp-scan (on/off)",
|
||||
"Maintenance_Tool_arpscansw_noti": "Activar arp-scan on or off",
|
||||
"Maintenance_Tool_arpscansw_noti_text": "Cuando el escaneo se ha apagado, permanece apagado hasta que se active nuevamente.",
|
||||
@@ -486,7 +484,7 @@
|
||||
"Maintenance_themeselector_lable": "Seleccionar tema",
|
||||
"Maintenance_themeselector_text": "El cambio se produce en el lado del servidor, por lo que afecta a todos los dispositivos en uso.",
|
||||
"Maintenance_version": "Actualizaciones de la aplicación",
|
||||
"NETWORK_DEVICE_TYPES_description": "Qué tipos de dispositivos pueden usarse como dispositivos de red en la vista Red. El tipo de dispositivo debe coincidir exactamente con la configuración <code> Tipo </code> en un dispositivo específico en los Detalles del dispositivo. No elimine los tipos existentes, solo agregue nuevos.",
|
||||
"NETWORK_DEVICE_TYPES_description": "Qué tipos de dispositivos se pueden usar como dispositivos de red en la vista de red. El tipo de dispositivo debe coincidir exactamente con la configuración de <code>Tipo</code> de un dispositivo específico en los detalles del dispositivo. Añádalo al dispositivo mediante el botón <code>+</code>. No elimine los tipos existentes, solo añada los nuevos.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Tipos de dispositivos de red",
|
||||
"NTFY_HOST_description": "URL de host NTFY que comienza con <code>http://</code> o <code>https://</code>. Puede usar la instancia alojada en <a target=\"_blank\" href=\"https://ntfy.sh/\">https://ntfy.sh</a> simplemente ingresando <code>https://ntfy. sh</código>.",
|
||||
"NTFY_HOST_name": "URL del host NTFY",
|
||||
@@ -499,7 +497,7 @@
|
||||
"NTFY_display_name": "NTFY",
|
||||
"NTFY_icon": "<i class=\"fa fa-terminal\"></i>",
|
||||
"Navigation_About": "Acerca de",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "Eventos de la aplicación",
|
||||
"Navigation_Devices": "Dispositivos",
|
||||
"Navigation_Donations": "Donaciones",
|
||||
"Navigation_Events": "Eventos",
|
||||
@@ -748,6 +746,32 @@
|
||||
"WEBHOOK_SIZE_name": "Tamaño máximo de carga útil",
|
||||
"WEBHOOK_URL_description": "URL de destino comienza con <code>http://</code> o <code>https://</code>.",
|
||||
"WEBHOOK_URL_name": "URL de destino",
|
||||
"WF_Action_Add": "Agregar acción",
|
||||
"WF_Action_field": "Campo",
|
||||
"WF_Action_type": "Tipo",
|
||||
"WF_Action_value": "Valor",
|
||||
"WF_Actions": "Acciones",
|
||||
"WF_Add": "Agregar flujo de trabajo",
|
||||
"WF_Add_Condition": "Agregar condición",
|
||||
"WF_Add_Group": "Agregar grupo",
|
||||
"WF_Condition_field": "Campo",
|
||||
"WF_Condition_operator": "Operador",
|
||||
"WF_Condition_value": "Valor",
|
||||
"WF_Conditions": "Condiciones",
|
||||
"WF_Conditions_logic_rules": "Reglas lógicas",
|
||||
"WF_Duplicate": "Duplicar flujo de trabajo",
|
||||
"WF_Enabled": "Flujo de trabajo habilitado",
|
||||
"WF_Export": "Exportar flujo de trabajo",
|
||||
"WF_Export_Copy": "Copiar el flujo de trabajo de abajo e importarlo donde necesite.",
|
||||
"WF_Import": "Importar flujo de trabajo",
|
||||
"WF_Import_Copy": "Pegar en el flujo de trabajo que copió previamente.",
|
||||
"WF_Name": "Nombre del flujo de trabajo",
|
||||
"WF_Remove": "Eliminar flujo de trabajo",
|
||||
"WF_Remove_Copy": "¿Desea eliminar este flujo de trabajo?",
|
||||
"WF_Save": "Guardar flujos de trabajo",
|
||||
"WF_Trigger": "Disparador",
|
||||
"WF_Trigger_event_type": "Tipo de evento",
|
||||
"WF_Trigger_type": "TIpo de disparador",
|
||||
"Webhooks_display_name": "Webhooks",
|
||||
"Webhooks_icon": "<i class=\"fa fa-circle-nodes\"></i>",
|
||||
"Webhooks_settings_group": "<i class=\"fa fa-circle-nodes\"></i> Webhooks",
|
||||
@@ -762,7 +786,7 @@
|
||||
"general_event_title": "Ejecutar un evento ad-hoc",
|
||||
"go_to_node_event_icon": "fa-square-up-right",
|
||||
"go_to_node_event_tooltip": "Vaya a la página de Red del nodo indicado",
|
||||
"new_version_available": "",
|
||||
"new_version_available": "Una nueva versión está disponible.",
|
||||
"report_guid": "Guía de las notificaciones:",
|
||||
"report_guid_missing": "No se ha encontrado la notificación vinculada. Hay un pequeño retraso entre las notificaciones enviadas recientemente y su disponibilidad. Actualiza tu página y la caché después de unos segundos. También es posible que la notificación seleccionada se haya eliminado durante el mantenimiento, tal y como se especifica en la configuración <code>de DBCLNP_NOTIFI_HIST</code>. <br/> <br/>En su lugar, se muestra la notificación más reciente. La notificación que falta tiene el siguiente GUID:",
|
||||
"report_select_format": "Selecciona el formato:",
|
||||
@@ -791,10 +815,10 @@
|
||||
"settings_publishers_info": "Cargue más editor@s con el ajuste <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
|
||||
"settings_publishers_label": "Editores",
|
||||
"settings_readonly": "No se puede LEER ni ESCRIBIR <code>app.conf</code>. Intente reiniciar el contenedor y lea la <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/FILE_PERMISSIONS.md\" target=\"_blank\">documentación de permisos de archivo</a>",
|
||||
"settings_saved": "<br/>Ajustes guardados. <br/><br/> Recargando... <br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
|
||||
"settings_saved": "<br/>Ajustes guardados. <br/> Recargando... <br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
|
||||
"settings_system_icon": "fa-solid fa-gear",
|
||||
"settings_system_label": "Sistema",
|
||||
"settings_update_item_warning": "Actualice el valor a continuación. Tenga cuidado de seguir el formato anterior. <b>O la validación no se realiza.</b>",
|
||||
"test_event_icon": "fa-vial-circle-check",
|
||||
"test_event_tooltip": "Guarda tus cambios antes de probar nuevos ajustes."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"About_Design": "Conçu pour :",
|
||||
"About_Exit": "Se déconnecter",
|
||||
"About_Title": "Analyse de la sécurité du réseau et cadre de notification",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_AppEventProcessed": "Traité(s)",
|
||||
"AppEvents_DateTimeCreated": "Connecté",
|
||||
"AppEvents_Extra": "Extra",
|
||||
"AppEvents_GUID": "GUID d’événements de l'application",
|
||||
@@ -22,7 +22,7 @@
|
||||
"AppEvents_ObjectPlugin": "Plugin lié",
|
||||
"AppEvents_ObjectPrimaryID": "Identité primaire",
|
||||
"AppEvents_ObjectSecondaryID": "Identité secondaire",
|
||||
"AppEvents_ObjectStatus": "État (au moment de l'enregistrement)",
|
||||
"AppEvents_ObjectStatus": "État enregistré",
|
||||
"AppEvents_ObjectStatusColumn": "Colonne d'état",
|
||||
"AppEvents_ObjectType": "Type d'objet",
|
||||
"AppEvents_Plugin": "Plugin",
|
||||
@@ -225,7 +225,7 @@
|
||||
"Device_TableHead_Name": "Nom",
|
||||
"Device_TableHead_NetworkSite": "Site Réseau",
|
||||
"Device_TableHead_Owner": "Propriétaire",
|
||||
"Device_TableHead_Parent_MAC": "MAC du nœud principal",
|
||||
"Device_TableHead_Parent_MAC": "Nœud réseau principal",
|
||||
"Device_TableHead_Port": "Port",
|
||||
"Device_TableHead_PresentLastScan": "Présence",
|
||||
"Device_TableHead_RowID": "ID de colonne",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "Tous",
|
||||
"Device_Title": "Appareils",
|
||||
"Devices_Filters": "Filtres",
|
||||
"Donations_Others": "Autres",
|
||||
"Donations_Platforms": "Plateformes de sponsoring",
|
||||
"Donations_Text": "Coucou 👋 ! </br> Merci d'avoir cliqué ici 😅 </br> </br> J'essaie de récolter des donations pour vous faire un meilleur produit. En plus, ça m'aide à éviter le burn-out pour développer cette application plus longtemps. Toute subvention (régulière ou non) me donne envie de poursuivre le développement de cette application.</br> J'aimerais réduire mon activité principale pour me concentrer plus longuement à NetAlertX. Vous auriez plus de fonctionnalités, une application mieux finie et avec moins de bugs.</br> </br> Merci de votre lecture - je vous suis reconnaissant pour votre soutien ❤🙏 </br> </br> Version courte : en me soutenant, vous aurez : </br> </br> <ul><li>Des mises à jour régulières pour protéger vos données personnelles et familiales 🔄</li><li>Moins de bugs 🐛🔫</li><li>Des fonctionnalités plus riches et plus nombreuses ➕</li><li>Je ne me retrouve pas en burn-out 🔥🤯</li><li>Des versions moins à la va-vite 💨</li><li>une meilleure documentation <20></li><li>Un support meilleur et plus réactif en cas de problème 🆘</li></ul> </br> 📧Envoyez-moi un courriel à <a href='mailto :jokob@duck.com ?subject=NetAlertX'>jokob@duck.com</a> si vous voulez me contacter ou du je peux ajouter une autre plateforme de soutien. </br>",
|
||||
"Donations_Title": "Dons",
|
||||
"ENABLE_PLUGINS_description": "Active les fonctionnalités des <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">Plugins</a>. Charger des plugins nécessite plus de ressources, il est recommandé de les désactiver sur des systèmes de faible puissance.",
|
||||
"ENABLE_PLUGINS_name": "Activer les Plugins",
|
||||
"ENCRYPTION_KEY_description": "Clé de chiffrement des données.",
|
||||
@@ -338,7 +334,7 @@
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Paramètre de maintenance. S'il est activé (<code>0</code> s'il est désactivé), les appareils marqués comme <b>Nouvel appareil</b> seront supprimés si leur durée depuis la <b>première session</b> est plus ancienne que le nombre d'heures paramétré. Utilisez ce paramétrage si vous voulez supprimer automatiquement les <b>Nouveaux appareils</b> après <code>X</code> heures.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Supprimer les nouveaux appareils après",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Il s'agit d'un paramètre de maintenance <b>SUPPRIMER des appareils</b>. Si cette option est activée (<code>0</code> est désactivé), les appareils qui sont <b>Hors ligne</b> et dont la <b>dernière heure hors ligne</b> est plus ancienne que les heures spécifiées dans ce paramètre. Utilisez ce paramètre si vous souhaitez supprimer automatiquement <b>Appareils hors ligne</b> après <code>X</code> heures de déconnexion.",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Il s'agit d'un paramètre de maintenance <b>SUPPRIMER des appareils</b>. Si cette option est activée (<code>0</code> est désactivé), les appareils qui sont <b>Hors ligne</b> et dont la <b>dernière connexion</b> est plus ancienne que les heures spécifiées dans ce paramètre. Utilisez ce paramètre si vous souhaitez supprimer automatiquement <b>Appareils hors ligne</b> après <code>X</code> heures de déconnexion.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Supprimez les appareils hors ligne après",
|
||||
"LOADED_PLUGINS_description": "Affiche les plugins chargés. Ajouter des plugins peut ralentir l'application. Obtenez plus d'informations dur quels plugins dont à activer, ou les options de scan dans la <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">documentation des plugins</a>. Décharger des plugins leur fait perdre leurs paramètres. Seuls les plugins <code>désactivés</code> peuvent être déchargés.",
|
||||
"LOADED_PLUGINS_name": "Plugins chargés",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Outils de maintenance",
|
||||
"Maintenance_Tool_DownloadConfig": "Export des paramètres",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Télécharger une sauvegarde complète de vos paramètres stockés dans le fichier <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Export des workflows",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Télécharger une sauvegarde complète de vos workflows enregistrés dans le fichier <code>workflows.json</code>.",
|
||||
"Maintenance_Tool_ExportCSV": "Export des appareils (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Export des appareils (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Êtes-vous sûr de vouloir générer un fichier CSV ?",
|
||||
@@ -465,7 +463,7 @@
|
||||
"NETWORK_DEVICE_TYPES_description": "Les types d'appareils autorisés à être utilisés comme appareils réseau dans la vue Réseau. Le type d'appareils doit être identique au paramètre <code>Type</code> d'un appareil dans le détail des appareils. Ajouter le sur l'appareil grâce au bouton <code>+</code>. Ne pas supprimer de valeurs, seulement en ajouter de nouvelles.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Type d'appareil réseau",
|
||||
"Navigation_About": "À propos",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "Événements de l'appli",
|
||||
"Navigation_Devices": "Appareils",
|
||||
"Navigation_Donations": "Dons",
|
||||
"Navigation_Events": "Évènements",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Rafraîchir automatiquement l'interface graphique",
|
||||
"VERSION_description": "Valeur de la version ou du timestamp d'aide à vérifier si l'application a été mise à jour.",
|
||||
"VERSION_name": "Version ou Timestamp",
|
||||
"WF_Action_Add": "Ajouter une action",
|
||||
"WF_Action_field": "Champ",
|
||||
"WF_Action_type": "Type",
|
||||
"WF_Action_value": "Valeur",
|
||||
"WF_Actions": "Actions",
|
||||
"WF_Add": "Ajouter un workflow",
|
||||
"WF_Add_Condition": "Ajouter une condition",
|
||||
"WF_Add_Group": "Ajouter un groupe",
|
||||
"WF_Condition_field": "Champ",
|
||||
"WF_Condition_operator": "Opérateur",
|
||||
"WF_Condition_value": "Valeur",
|
||||
"WF_Conditions": "Conditions",
|
||||
"WF_Conditions_logic_rules": "Règles logiques",
|
||||
"WF_Duplicate": "Dupliquer le workflow",
|
||||
"WF_Enabled": "Workflow activé",
|
||||
"WF_Export": "Exporter le workflow",
|
||||
"WF_Export_Copy": "Copier le workflow ci-dessous pour pouvoir l'importer au besoin.",
|
||||
"WF_Import": "Importer un workflow",
|
||||
"WF_Import_Copy": "Coller le workflow précédemment copié.",
|
||||
"WF_Name": "Nom du workflow",
|
||||
"WF_Remove": "Supprimer le workflow",
|
||||
"WF_Remove_Copy": "Voulez-vous supprimer ce workflow ?",
|
||||
"WF_Save": "Enregistrer les workflows",
|
||||
"WF_Trigger": "Déclencheur",
|
||||
"WF_Trigger_event_type": "Type d'événement",
|
||||
"WF_Trigger_type": "Type de déclencheur",
|
||||
"add_icon_event_icon": "fa-square-plus",
|
||||
"add_icon_event_tooltip": "Ajouter une nouvelle icône",
|
||||
"add_option_event_icon": "fa-square-plus",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. <b>Il n'y a pas de pas de contrôle.</b>",
|
||||
"test_event_icon": "fa-vial-circle-check",
|
||||
"test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"About_Design": "Progettato per:",
|
||||
"About_Exit": "Esci",
|
||||
"About_Title": "Scanner di sicurezza di rete e framework di notifica",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_AppEventProcessed": "Elaborato",
|
||||
"AppEvents_DateTimeCreated": "Loggato",
|
||||
"AppEvents_Extra": "Extra",
|
||||
"AppEvents_GUID": "GUID evento applicazione",
|
||||
@@ -22,7 +22,7 @@
|
||||
"AppEvents_ObjectPlugin": "Plugin collegato",
|
||||
"AppEvents_ObjectPrimaryID": "ID primario",
|
||||
"AppEvents_ObjectSecondaryID": "ID secondario",
|
||||
"AppEvents_ObjectStatus": "Stato (al momento del log)",
|
||||
"AppEvents_ObjectStatus": "Stato registrato",
|
||||
"AppEvents_ObjectStatusColumn": "Colonna di stato",
|
||||
"AppEvents_ObjectType": "Tipo oggetto",
|
||||
"AppEvents_Plugin": "Plugin",
|
||||
@@ -225,7 +225,7 @@
|
||||
"Device_TableHead_Name": "Nome",
|
||||
"Device_TableHead_NetworkSite": "Sito di rete",
|
||||
"Device_TableHead_Owner": "Proprietario",
|
||||
"Device_TableHead_Parent_MAC": "MAC del nodo principale",
|
||||
"Device_TableHead_Parent_MAC": "Nodo di rete principale",
|
||||
"Device_TableHead_Port": "Porta",
|
||||
"Device_TableHead_PresentLastScan": "Presenza",
|
||||
"Device_TableHead_RowID": "ID riga",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "Tutti",
|
||||
"Device_Title": "Dispositivi",
|
||||
"Devices_Filters": "Filtri",
|
||||
"Donations_Others": "Altri",
|
||||
"Donations_Platforms": "Piattaforme sponsor",
|
||||
"Donations_Text": "Hey 👋! </br> Grazie per aver cliccato su questa voce di menu 😅 </br> </br> Sto cercando di ricevere donazioni per poter fornire un software migliore. Inoltre potrebbe aiutarmi a non andare in burnout, in modo da poter supportare questa app più a lungo. Ogni piccola (ricorrente o non) sponsorizzazione mi invoglia a mettere più impegno nello sviluppo di questa app. </br> Mi piacerebbe accorciare la mia settimana lavorativa e nel tempo rimanente dedicarmi completamente a NetAlertX. Riceverai più funzionalità, un'applicazione più rifinita e con meno bug.</br> </br> Grazie per aver letto, ti sono grato per ogni tipo di supporto ❤🙏 </br> </br> TL;DR: Supportandomi otterrai: </br> </br> <ul><li>Aggiornamenti più regolari per mantenere i tuoi dati e la tua famiglia sicuri 🔄</li><li>Meno bug 🐛🔫</li><li>Funzionalità migliori e più numerose➕</li><li>Io non vado in burnout 🔥🤯</li><li>Rilasci meno affrettati 💨</li><li>Migliore documentazione 📚</li><li>Supporto migliore e più veloce in caso di problemi 🆘</li></ul> </br> 📧Invia una mail a <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> se vuoi contattarmi o chiedermi di aggiungere altre piattaforme di sponsorizzazione. </br>",
|
||||
"Donations_Title": "Donazioni",
|
||||
"ENABLE_PLUGINS_description": "Abilita la funzionalità <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugin</a>. Utilizzare i plugin richiede più risorse hardware, potresti voler disabilitare questa opzione sui dispositivi meno performanti.",
|
||||
"ENABLE_PLUGINS_name": "Abilita plugin",
|
||||
"ENCRYPTION_KEY_description": "Chiave di crittografia dei dati.",
|
||||
@@ -338,7 +334,7 @@
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Questa è un'impostazione di manutenzione <b>ELIMINAZIONE dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), tutti i dispositivi marcati con <b>Nuovo dispositivo</b> verranno eliminati se l'orario della <b>Prima sessione</b> è precedente all'orario di questa impostazione. Usa questa impostazione se vuoi eliminare automaticamente i <b>Nuovi dispositivi</b> dopo <code>X</code> ore.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Elimina nuovi dispositivi dopo",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Questa è un'impostazione di manutenzione <b>ELIMINAZIONE dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), i dispositivi che sono <b>Offline</b> e la loro data e ora <b>Ultima offline</b> sono più vecchi delle ore specificate in questa impostazione saranno eliminati. Usa questa impostazione se vuoi eliminare automaticamente <b>Dispositivi offline</b> dopo <code>X</code> ore trascorse offline.",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Questa è un'impostazione di manutenzione <b>ELIMINAZIONE dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), i dispositivi che sono <b>Offline</b> e la loro data e ora <b>Ultima connessione</b> sono più vecchi delle ore specificate in questa impostazione saranno eliminati. Usa questa impostazione se vuoi eliminare automaticamente <b>Dispositivi offline</b> dopo <code>X</code> ore trascorse offline.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Elimina dispositivi offline dopo",
|
||||
"LOADED_PLUGINS_description": "Quali Plugin caricare. L'aggiunta di plugin potrebbe rallentare l'applicazione. Leggi di più su quali plugin necessitano di essere abilitati, tipi e opzioni di scansione nella <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">documentazione plugin</a>. I plugin disinstallati perdono la loro configurazione. Solo i plugin <code>disabilitati</code> possono essere disinstallati.",
|
||||
"LOADED_PLUGINS_name": "Plugin caricati",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Strumenti di manutenzione",
|
||||
"Maintenance_Tool_DownloadConfig": "Impostazioni Esporta",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Scarica un backup completo della configurazione delle tue Impostazioni memorizzata nel file <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Esportazione flussi di lavoro",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Scarica un backup completo dei tuoi flussi di lavoro archiviati nel file <code>workflows.json</code>.",
|
||||
"Maintenance_Tool_ExportCSV": "Esporta dispositivi (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Esporta dispositivi (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Sei sicuro di voler generare un file CSV?",
|
||||
@@ -465,7 +463,7 @@
|
||||
"NETWORK_DEVICE_TYPES_description": "Quali tipi di dispositivo possono essere utilizzati come dispositivi di rete nella vista Rete. Il tipo di dispositivo deve corrispondere esattamente all'impostazione <code>Tipo</code> su un dispositivo specifico nei Dettagli dispositivo. Aggiungilo sul Dispositivo tramite il pulsante <code>+</code>. Non rimuovere i tipi esistenti, aggiungine solo di nuovi.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Tipi di dispositivi di rete",
|
||||
"Navigation_About": "Informazioni su",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "Eventi app",
|
||||
"Navigation_Devices": "Dispositivi",
|
||||
"Navigation_Donations": "Donazioni",
|
||||
"Navigation_Events": "Eventi",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Aggiorna automaticamente la UI",
|
||||
"VERSION_description": "Valore di supporto della versione o della marca temporale per verificare se l'app è stata aggiornata.",
|
||||
"VERSION_name": "Versione o marca temporale",
|
||||
"WF_Action_Add": "Aggiungi azione",
|
||||
"WF_Action_field": "Campo",
|
||||
"WF_Action_type": "Tipo",
|
||||
"WF_Action_value": "Valore",
|
||||
"WF_Actions": "Azioni",
|
||||
"WF_Add": "Aggiungi flusso di lavoro",
|
||||
"WF_Add_Condition": "Aggiungi condizione",
|
||||
"WF_Add_Group": "Aggiungi gruppo",
|
||||
"WF_Condition_field": "Campo",
|
||||
"WF_Condition_operator": "Operatore",
|
||||
"WF_Condition_value": "Valore",
|
||||
"WF_Conditions": "Condizioni",
|
||||
"WF_Conditions_logic_rules": "Regole logiche",
|
||||
"WF_Duplicate": "Flusso di lavoro duplicato",
|
||||
"WF_Enabled": "Flusso di lavoro abilitato",
|
||||
"WF_Export": "Esporta flusso di lavoro",
|
||||
"WF_Export_Copy": "Copia il flusso di lavoro sottostante e importalo dove necessario.",
|
||||
"WF_Import": "Importa flusso di lavoro",
|
||||
"WF_Import_Copy": "Incolla il flusso di lavoro copiato in precedenza.",
|
||||
"WF_Name": "Nome flusso di lavoro",
|
||||
"WF_Remove": "Rimuovi flusso di lavoro",
|
||||
"WF_Remove_Copy": "Vuoi rimuovere questo flusso di lavoro?",
|
||||
"WF_Save": "Salva flussi di lavoro",
|
||||
"WF_Trigger": "Trigger",
|
||||
"WF_Trigger_event_type": "Tipo evento",
|
||||
"WF_Trigger_type": "Tipo di trigger",
|
||||
"add_icon_event_icon": "fa-square-plus",
|
||||
"add_icon_event_tooltip": "Aggiungi nuova icona",
|
||||
"add_option_event_icon": "fa-square-plus",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. <b>La convalida non viene eseguita.</b>",
|
||||
"test_event_icon": "fa-vial-circle-check",
|
||||
"test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "Alle",
|
||||
"Device_Title": "Enheter",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "Andre",
|
||||
"Donations_Platforms": "Sponsorplattformer",
|
||||
"Donations_Text": "Hei 👋! </br> Takk for at du klikket på dette menyelementet 😅 </br> </br> Jeg prøver å samle inn noen donasjoner for å lage bedre programvare. Dessuten ville det hjelpe meg å ikke bli utbrent, så jeg kan støtte denne appen lenger. Enhver liten (tilbakevendende eller ikke) sponsing gjør at jeg ønsker å legge mer innsats i denne appen. </br> Jeg vil gjerne forkorte arbeidsuken min og i den gjenværende tiden fokusere fullt ut på NetAlertX. Du vil få mer funksjonalitet, en mer polert app og mindre feil. </br> </br> Takk for at du leste - jeg er takknemlig for all støtte ❤🙏 </br> </br> TL;DR: Ved å støtte meg får du: </br> </br> <ul> <li>Jevne oppdateringer for å holde dataene dine og familien din trygge 🔄</li><li>Mindre feil 🐛🔫</li><li>Bedre og mer funksjonalitet➕</li><li>Jeg blir ikke utbrent 🔥🤯</li><li>Mindre forhastede utgivelser 💨</li><li>Bedre dokumenter📚</li><li>Raskere og bedre støtte med problemer 🆘</li></ul> </br> 📧 Send meg en e-post til <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> hvis du ønsker å komme i kontakt eller hvis jeg skal legge til andre sponsorplattformer. </br>",
|
||||
"Donations_Title": "Donasjoner",
|
||||
"ENABLE_PLUGINS_description": "Aktiverer <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a> funksjonaliten. Å laste inn plugins krever mer maskinvareressurser, så det kan være lurt å deaktivere dem på et system med lav strøm.",
|
||||
"ENABLE_PLUGINS_name": "Aktiver Plugins",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Vedlikeholdsverktøy",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "Eksporter CSV",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Eksporter CSV",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Er du sikker på at du vil generere en CSV-fil?",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Oppdater UI automatisk",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "Wszystkie",
|
||||
"Device_Title": "Urządzenia",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "Inne",
|
||||
"Donations_Platforms": "Platforma Sponsora",
|
||||
"Donations_Text": "Cześć 👋! </br> Dziękuje że kliknąłeś w to menu 😅 </br> </br> Próbuje zebrać trochę dotacji by ulepszyć to oprogramowanie. Także pomaga mi to się nie wypalić bym dalej mógł ulepszać to narzędzie. Każdy mały (powtarzający się lub nie) sponsoring sprawia że chce wkładać więcej pracy w tą aplikację. </br> Chciałbym skrócić mój tydzień pracy i w wolnym czasie skupić się nad NetAlertX. Dostawalibyście wtedy więcej funkcjonalności i były by one ciągle udoskonalane i posiadające mniej błędów. </br> </br> Dziękuję że to przeczytałeś - Jestem wdzięczny za pomoc ❤🙏</br> </br> TL;DR: Wspierając mnie otrzymujesz: </br> </br> <ul><li> Regularne aktualizacje by zapewnić twoim danym i rodzinie bezpieczeństwo 🔄 </li><li>Mniej błędów (bugów) 🐛🔫</li><li>Nowe i lepsze funkcjonalności➕</li><li>Nie tracę zapału do dalszego tworzenia 🔥🤯</li><li>Mniej pośpieszne, bardziej dopracowane wydania💨</li><li>Lepsza dokumentacja📚</li><li>Szybsza i lepsza pomoc w problemach🆘</li></ul> </br>📧Napisz E-mail do mnie na<a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> jeżeli chcesz nawiązać kontakt albo czy powinien dodać kolejną platformę z sponsoringiem.</br>",
|
||||
"Donations_Title": "Dotacje",
|
||||
"ENABLE_PLUGINS_description": "Włącza funkcjonalność <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">pluginów</a>. Uruchomienie pluginów wymaga więcej zasobów sprzętu więcej możesz chcieć to wyłączyć dla słabszych systemów.",
|
||||
"ENABLE_PLUGINS_name": "Włącz Pluginy",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Narzędzia konserwacyjne",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "Eksport CSV",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Eksport CSV",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Jesteś pewien, że chcesz wygenerować plik CSV?",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Automatycznie odświeżaj UI",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"API_CUSTOM_SQL_description": "Você pode especificar uma consulta SQL personalizada que irá gerar um arquivo JSON e, em seguida, expô-lo por meio do <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\"><code>table_custom_endpoint.json</code> endpoint do arquivo</a>.",
|
||||
"API_CUSTOM_SQL_name": "Endpoint customizado",
|
||||
"API_TOKEN_description": "API token para comunicação segura, você pode gerar um valor ou inserir qualquer valor. Este é enviado no cabeçalho da requisição. Usado no <code>SYNC</code> plugin, servidor GraphQL .",
|
||||
"API_TOKEN_description": "Token de API para comunicação segura. Gere um ou insira qualquer valor. Ele é enviado no cabeçalho da solicitação e usado no plugin <code>SYNC</code>, no servidor GraphQL e em outros endpoints de API. Você pode usar os endpoints de API para criar integrações personalizadas, conforme descrito na <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md\" target=\"_blank\">documentação da API</a>.",
|
||||
"API_TOKEN_name": "API token",
|
||||
"API_display_name": "API",
|
||||
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
|
||||
@@ -49,7 +49,7 @@
|
||||
"BackDevices_DBTools_ImportCSVError": "O arquivo CSV não pode ser importado. Assegure que o formato está correto.",
|
||||
"BackDevices_DBTools_ImportCSVMissing": "O arquivo CSV não foi localizado em <b>/config/devices.csv.</b>",
|
||||
"BackDevices_DBTools_Purge": "As copias de segurança antigas foram excluidas",
|
||||
"BackDevices_DBTools_UpdDev": "Dispositivo atualizado com sucesso",
|
||||
"BackDevices_DBTools_UpdDev": "Dispositivo atualizado com sucesso. A lista de dispositivos principais pode levar algum tempo para recarregar se uma varredura estiver em andamento.",
|
||||
"BackDevices_DBTools_UpdDevError": "Erro atualizando o dispositivo",
|
||||
"BackDevices_DBTools_Upgrade": "Banco de dados atualizado com sucesso",
|
||||
"BackDevices_DBTools_UpgradeError": "A atualização do banco de dados falhou",
|
||||
@@ -61,17 +61,17 @@
|
||||
"BackDevices_darkmode_enabled": "Modo Noturno Habilitado",
|
||||
"CLEAR_NEW_FLAG_description": "Se habilitado (<code>0</code> está desativado), dispositivos marcados como<b>Novo Dispositivo</b> serão desmarcados se o limite (especificado em horas) exceder o tempo da <b>Primeira Sessão </b>.",
|
||||
"CLEAR_NEW_FLAG_name": "",
|
||||
"CustProps_cant_remove": "",
|
||||
"CustProps_cant_remove": "Não é possível remover, é necessária pelo menos uma propriedade.",
|
||||
"DAYS_TO_KEEP_EVENTS_description": "Esta é uma definição de manutenção. Especifica o número de dias de entradas de eventos que serão mantidas. Todos os eventos mais antigos serão eliminados periodicamente. Também se aplica ao Histórico de eventos do plug-in.",
|
||||
"DAYS_TO_KEEP_EVENTS_name": "Excluir eventos mais antigos que",
|
||||
"DISCOVER_PLUGINS_description": "",
|
||||
"DISCOVER_PLUGINS_name": "",
|
||||
"DevDetail_Copy_Device_Title": "<i class=\"fa fa-copy\"></i> Copiar detalhes do dispositivo",
|
||||
"DISCOVER_PLUGINS_description": "Desative esta opção para acelerar a inicialização e a gravação de definições. Quando desativada, os plug-ins não são descobertos e não é possível adicionar novos plug-ins à definição<code>LOADED_PLUGINS</code>.",
|
||||
"DISCOVER_PLUGINS_name": "Descobrir plugins",
|
||||
"DevDetail_Copy_Device_Title": "Copiar detalhes do dispositivo",
|
||||
"DevDetail_Copy_Device_Tooltip": "Copiar detalhes do dispositivo a partir da lista pendente. Tudo o que se encontra nesta página será substituído",
|
||||
"DevDetail_CustomProperties_Title": "",
|
||||
"DevDetail_CustomProps_reset_info": "",
|
||||
"DevDetail_DisplayFields_Title": "",
|
||||
"DevDetail_EveandAl_AlertAllEvents": "Alerte Todos os Eventos",
|
||||
"DevDetail_CustomProperties_Title": "Propriedades personalizadas",
|
||||
"DevDetail_CustomProps_reset_info": "Isto irá remover as suas propriedades personalizadas neste dispositivo e repô-las para o valor predefinido.",
|
||||
"DevDetail_DisplayFields_Title": "Visualização",
|
||||
"DevDetail_EveandAl_AlertAllEvents": "Eventos de alerta",
|
||||
"DevDetail_EveandAl_AlertDown": "Alerta Desligado",
|
||||
"DevDetail_EveandAl_Archived": "Arquivado",
|
||||
"DevDetail_EveandAl_NewDevice": "Novo Dispositivo",
|
||||
@@ -145,7 +145,7 @@
|
||||
"DevDetail_Tab_EventsTableEvent": "Tipo de evento",
|
||||
"DevDetail_Tab_EventsTableIP": "IP",
|
||||
"DevDetail_Tab_EventsTableInfo": "Informações adicionais",
|
||||
"DevDetail_Tab_Nmap": "<i class=\"fa fa-ethernet\"> </i>",
|
||||
"DevDetail_Tab_Nmap": "<i class=\"fa fa-ethernet\"> </i> Nmap",
|
||||
"DevDetail_Tab_NmapEmpty": "Nenhuma porta detectada com Nmap neste dispositivo.",
|
||||
"DevDetail_Tab_NmapTableExtra": "Adicional",
|
||||
"DevDetail_Tab_NmapTableHeader": "Resultados da verificação programada",
|
||||
@@ -186,13 +186,13 @@
|
||||
"DevDetail_button_Delete": "Excluir dispositivo",
|
||||
"DevDetail_button_DeleteEvents": "Excluir eventos",
|
||||
"DevDetail_button_DeleteEvents_Warning": "Tem certeza de que deseja excluir todos os eventos deste dispositivo?<br><br>(isso limpará o <b>Histórico de eventos</b> e as <b>sessões</b> e poderá ajudar com constantes (persistentes) notificações)",
|
||||
"DevDetail_button_Delete_ask": "",
|
||||
"DevDetail_button_Delete_ask": "Tem a certeza de que pretende apagar este dispositivo? Em vez disso, também o pode arquivar.",
|
||||
"DevDetail_button_OverwriteIcons": "Substituir ícones",
|
||||
"DevDetail_button_OverwriteIcons_Tooltip": "Substituir ícones de todos os dispositivos pelo mesmo tipo de dispositivo",
|
||||
"DevDetail_button_OverwriteIcons_Warning": "Tem certeza de que deseja substituir todos os ícones de todos os dispositivos pelo mesmo tipo de dispositivo do tipo de dispositivo atual?",
|
||||
"DevDetail_button_Reset": "Redefinir alterações",
|
||||
"DevDetail_button_Save": "Salvar",
|
||||
"DeviceEdit_ValidMacIp": "",
|
||||
"DeviceEdit_ValidMacIp": "Insira um endereço <b>Mac</b> e <b>IP</b> válidos.",
|
||||
"Device_MultiEdit": "Edição múltipla",
|
||||
"Device_MultiEdit_Backup": "Cuidado, inserir valores errados abaixo interromperá sua configuração. Faça backup do seu banco de dados ou da configuração dos dispositivos primeiro (<a href=\"php/server/devices.php?action=ExportCSV\">clique para baixar <i class=\"fa-solid fa-download fa-bounce\"></i> </a>). Leia como recuperar dispositivos deste arquivo no <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\" _blank\">Documentação de backups</a>.",
|
||||
"Device_MultiEdit_Fields": "Editar campos:",
|
||||
@@ -208,7 +208,7 @@
|
||||
"Device_Shortcut_Favorites": "Favoritos",
|
||||
"Device_Shortcut_NewDevices": "Novos dispositivos",
|
||||
"Device_Shortcut_OnlineChart": "Presença do dispositivo",
|
||||
"Device_TableHead_AlertDown": "",
|
||||
"Device_TableHead_AlertDown": "Alerta em baixo",
|
||||
"Device_TableHead_Connected_Devices": "Conexões",
|
||||
"Device_TableHead_CustomProps": "",
|
||||
"Device_TableHead_Favorite": "Favorito",
|
||||
@@ -227,11 +227,11 @@
|
||||
"Device_TableHead_Owner": "Proprietário",
|
||||
"Device_TableHead_Parent_MAC": "Nó pai MAC",
|
||||
"Device_TableHead_Port": "Porta",
|
||||
"Device_TableHead_PresentLastScan": "",
|
||||
"Device_TableHead_PresentLastScan": "Presente",
|
||||
"Device_TableHead_RowID": "ID da linha",
|
||||
"Device_TableHead_Rowid": "ID da linha",
|
||||
"Device_TableHead_SSID": "SSID",
|
||||
"Device_TableHead_SourcePlugin": "",
|
||||
"Device_TableHead_SourcePlugin": "Plugin de fonte",
|
||||
"Device_TableHead_Status": "Status",
|
||||
"Device_TableHead_SyncHubNodeName": "Nó de sincronização",
|
||||
"Device_TableHead_Type": "Tipo",
|
||||
@@ -243,15 +243,11 @@
|
||||
"Device_Tablelenght": "Mostrar entradas do _MENU_",
|
||||
"Device_Tablelenght_all": "Todos",
|
||||
"Device_Title": "Dispositivos",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "Outros",
|
||||
"Donations_Platforms": "Plataformas de patrocinadores",
|
||||
"Donations_Text": "Ei 👋! </br> Obrigado por clicar neste item de menu 😅 </br> </br> Estou tentando coletar algumas doações para melhorar o software. Além disso, isso me ajudaria a não ficar exausto, para que eu pudesse oferecer suporte a este aplicativo por mais tempo. Qualquer pequeno patrocínio (recorrente ou não) me faz querer colocar mais esforço neste aplicativo. </br> Eu adoraria encurtar minha semana de trabalho e no tempo restante focar totalmente no NetAlertX. Você obteria mais funcionalidades, um aplicativo mais sofisticado e menos bugs. </br> </br> Obrigado pela leitura - sou grato por qualquer apoio ❤🙏 </br> </br> TL;DR: Ao me apoiar, você obtém: </br> </br> <ul> <li>Atualizações regulares para manter seus dados e sua família seguros 🔄</li><li>Menos bugs 🐛🔫</li><li>Melhor e mais funcionalidade➕</li><li>Eu não fico exausto 🔥🤯</li><li>Lançamentos menos apressados 💨</li><li>Documentos melhores📚</li><li>Suporte melhor e mais rápido com problemas 🆘</li></ul> </br> 📧 Envie-me um e-mail para <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> se quiser entrar em contato ou se devo adicionar outras plataformas de patrocínio. </br>",
|
||||
"Donations_Title": "Doações",
|
||||
"Devices_Filters": "Filtros",
|
||||
"ENABLE_PLUGINS_description": "Ativa a funcionalidade de <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a>. Carregar plug-ins requer mais recursos de hardware, então você pode querer desativá-los em sistemas de baixa potência.",
|
||||
"ENABLE_PLUGINS_name": "Habilitar plug-ins",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
"ENCRYPTION_KEY_name": "",
|
||||
"ENCRYPTION_KEY_description": "Chave de encriptação de dados.",
|
||||
"ENCRYPTION_KEY_name": "Chave de encriptação",
|
||||
"Email_display_name": "Email",
|
||||
"Email_icon": "<i class=\"fa fa-at\"></i>",
|
||||
"Events_Loading": "Carregando...",
|
||||
@@ -287,194 +283,196 @@
|
||||
"Events_Tablelenght": "Mostrar entradas do _MENU_",
|
||||
"Events_Tablelenght_all": "Todos",
|
||||
"Events_Title": "Eventos",
|
||||
"GRAPHQL_PORT_description": "",
|
||||
"GRAPHQL_PORT_name": "",
|
||||
"GRAPHQL_PORT_description": "O número da porta do servidor GraphQL. Certifique-se de que a porta seja exclusiva em todos os seus aplicativos neste host e nas instâncias do NetAlertX.",
|
||||
"GRAPHQL_PORT_name": "Porta GraphQL",
|
||||
"Gen_Action": "Ação",
|
||||
"Gen_Add": "Adicionar",
|
||||
"Gen_AddDevice": "",
|
||||
"Gen_AddDevice": "Adicionar dispositivo",
|
||||
"Gen_Add_All": "Adicionar todos",
|
||||
"Gen_All_Devices": "Todos os Dispositivos",
|
||||
"Gen_AreYouSure": "Tem certeza?",
|
||||
"Gen_Backup": "Executar backup",
|
||||
"Gen_Cancel": "Cancelar",
|
||||
"Gen_Change": "",
|
||||
"Gen_Change": "Alterar",
|
||||
"Gen_Copy": "Executar",
|
||||
"Gen_DataUpdatedUITakesTime": "OK - Pode levar um tempo para a interface do usuário ser atualizada se uma verificação estiver em execução.",
|
||||
"Gen_Delete": "Excluir",
|
||||
"Gen_DeleteAll": "Excluir todos",
|
||||
"Gen_Description": "",
|
||||
"Gen_Description": "Descrição",
|
||||
"Gen_Error": "Erro",
|
||||
"Gen_Filter": "Filtro",
|
||||
"Gen_Generate": "",
|
||||
"Gen_Generate": "Gerar",
|
||||
"Gen_LockedDB": "ERRO - O banco de dados pode estar bloqueado - Verifique F12 Ferramentas de desenvolvimento -> Console ou tente mais tarde.",
|
||||
"Gen_Offline": "Offline",
|
||||
"Gen_Okay": "Ok",
|
||||
"Gen_Online": "",
|
||||
"Gen_Online": "Online",
|
||||
"Gen_Purge": "Purge",
|
||||
"Gen_ReadDocs": "Leia mais em documentos.",
|
||||
"Gen_Remove_All": "Remover tudo",
|
||||
"Gen_Remove_Last": "Remover o último",
|
||||
"Gen_Reset": "",
|
||||
"Gen_Reset": "Repor",
|
||||
"Gen_Restore": "Executar restauração",
|
||||
"Gen_Run": "Executar",
|
||||
"Gen_Save": "Salvar",
|
||||
"Gen_Saved": "Salvo",
|
||||
"Gen_Search": "Procurar",
|
||||
"Gen_Select": "",
|
||||
"Gen_SelectIcon": "",
|
||||
"Gen_SelectToPreview": "",
|
||||
"Gen_Select": "Selecionar",
|
||||
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
|
||||
"Gen_SelectToPreview": "Selecionar para pré-visualizar",
|
||||
"Gen_Selected_Devices": "Dispositivos selecionados:",
|
||||
"Gen_Switch": "Trocar",
|
||||
"Gen_Upd": "Atualizado com sucesso",
|
||||
"Gen_Upd_Fail": "A atualização falhou",
|
||||
"Gen_Update": "Atualizar",
|
||||
"Gen_Update_Value": "Atualizar valor",
|
||||
"Gen_ValidIcon": "",
|
||||
"Gen_ValidIcon": "<i class=\"fa-solid fa-chevron-right \"></i>",
|
||||
"Gen_Warning": "Aviso",
|
||||
"Gen_Work_In_Progress": "Trabalho em andamento, um bom momento para enviar feedback em https://github.com/jokob-sk/NetAlertX/issues",
|
||||
"Gen_create_new_device": "",
|
||||
"Gen_create_new_device_info": "",
|
||||
"Gen_create_new_device": "Novo dispositivo",
|
||||
"Gen_create_new_device_info": "Os dispositivos são normalmente descobertos usando <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a>. No entanto, em certos casos, pode ser necessário adicionar dispositivos manualmente. Para explorar cenários específicos, verifique a <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">documentação de Redes Remotas</a>.",
|
||||
"General_display_name": "Geral",
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Esta é uma configuração de manutenção. Se habilitada (<code>0</code> is disabled), dispositivos marcados como <b>Novo Dispositivo</b> serão excluídos se o tempo de <b>Primeira Sessão</b> for mais antigo que as horas especificadas nesta configuração. Use esta configuração se quiser excluir automaticamente <b>Novos Dispositivos</b> após <code>X</code> horas.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Manter novos dispositivos por",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "",
|
||||
"LOADED_PLUGINS_description": "",
|
||||
"LOADED_PLUGINS_name": "",
|
||||
"LOG_LEVEL_description": "",
|
||||
"LOG_LEVEL_name": "",
|
||||
"Loading": "",
|
||||
"Login_Box": "",
|
||||
"Login_Default_PWD": "",
|
||||
"Login_Info": "",
|
||||
"Login_Psw-box": "",
|
||||
"Login_Psw_alert": "",
|
||||
"Login_Psw_folder": "",
|
||||
"Login_Psw_new": "",
|
||||
"Login_Psw_run": "",
|
||||
"Login_Remember": "",
|
||||
"Login_Remember_small": "",
|
||||
"Login_Submit": "",
|
||||
"Login_Toggle_Alert_headline": "",
|
||||
"Login_Toggle_Info": "",
|
||||
"Login_Toggle_Info_headline": "",
|
||||
"Maint_PurgeLog": "",
|
||||
"Maint_RestartServer": "",
|
||||
"Maint_Restart_Server_noti_text": "",
|
||||
"Maintenance_Running_Version": "",
|
||||
"Maintenance_Status": "",
|
||||
"Maintenance_Title": "",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "",
|
||||
"Maintenance_Tool_ExportCSV_noti": "",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "",
|
||||
"Maintenance_Tool_ExportCSV_text": "",
|
||||
"Maintenance_Tool_ImportCSV": "",
|
||||
"Maintenance_Tool_ImportCSV_noti": "",
|
||||
"Maintenance_Tool_ImportCSV_noti_text": "",
|
||||
"Maintenance_Tool_ImportCSV_text": "",
|
||||
"Maintenance_Tool_ImportConfig_noti": "",
|
||||
"Maintenance_Tool_ImportPastedCSV": "",
|
||||
"Maintenance_Tool_ImportPastedCSV_noti_text": "",
|
||||
"Maintenance_Tool_ImportPastedCSV_text": "",
|
||||
"Maintenance_Tool_ImportPastedConfig": "",
|
||||
"Maintenance_Tool_ImportPastedConfig_noti_text": "",
|
||||
"Maintenance_Tool_ImportPastedConfig_text": "",
|
||||
"Maintenance_Tool_arpscansw": "",
|
||||
"Maintenance_Tool_arpscansw_noti": "",
|
||||
"Maintenance_Tool_arpscansw_noti_text": "",
|
||||
"Maintenance_Tool_arpscansw_text": "",
|
||||
"Maintenance_Tool_backup": "",
|
||||
"Maintenance_Tool_backup_noti": "",
|
||||
"Maintenance_Tool_backup_noti_text": "",
|
||||
"Maintenance_Tool_backup_text": "",
|
||||
"Maintenance_Tool_check_visible": "",
|
||||
"Maintenance_Tool_darkmode": "",
|
||||
"Maintenance_Tool_darkmode_noti": "",
|
||||
"Maintenance_Tool_darkmode_noti_text": "",
|
||||
"Maintenance_Tool_darkmode_text": "",
|
||||
"Maintenance_Tool_del_ActHistory": "",
|
||||
"Maintenance_Tool_del_ActHistory_noti": "",
|
||||
"Maintenance_Tool_del_ActHistory_noti_text": "",
|
||||
"Maintenance_Tool_del_ActHistory_text": "",
|
||||
"Maintenance_Tool_del_alldev": "",
|
||||
"Maintenance_Tool_del_alldev_noti": "",
|
||||
"Maintenance_Tool_del_alldev_noti_text": "",
|
||||
"Maintenance_Tool_del_alldev_text": "",
|
||||
"Maintenance_Tool_del_allevents": "",
|
||||
"Maintenance_Tool_del_allevents30": "",
|
||||
"Maintenance_Tool_del_allevents30_noti": "",
|
||||
"Maintenance_Tool_del_allevents30_noti_text": "",
|
||||
"Maintenance_Tool_del_allevents30_text": "",
|
||||
"Maintenance_Tool_del_allevents_noti": "",
|
||||
"Maintenance_Tool_del_allevents_noti_text": "",
|
||||
"Maintenance_Tool_del_allevents_text": "",
|
||||
"Maintenance_Tool_del_empty_macs": "",
|
||||
"Maintenance_Tool_del_empty_macs_noti": "",
|
||||
"Maintenance_Tool_del_empty_macs_noti_text": "",
|
||||
"Maintenance_Tool_del_empty_macs_text": "",
|
||||
"Maintenance_Tool_del_selecteddev": "",
|
||||
"Maintenance_Tool_del_selecteddev_text": "",
|
||||
"Maintenance_Tool_del_unknowndev": "",
|
||||
"Maintenance_Tool_del_unknowndev_noti": "",
|
||||
"Maintenance_Tool_del_unknowndev_noti_text": "",
|
||||
"Maintenance_Tool_del_unknowndev_text": "",
|
||||
"Maintenance_Tool_displayed_columns_text": "",
|
||||
"Maintenance_Tool_drag_me": "",
|
||||
"Maintenance_Tool_order_columns_text": "",
|
||||
"Maintenance_Tool_purgebackup": "",
|
||||
"Maintenance_Tool_purgebackup_noti": "",
|
||||
"Maintenance_Tool_purgebackup_noti_text": "",
|
||||
"Maintenance_Tool_purgebackup_text": "",
|
||||
"Maintenance_Tool_restore": "",
|
||||
"Maintenance_Tool_restore_noti": "",
|
||||
"Maintenance_Tool_restore_noti_text": "",
|
||||
"Maintenance_Tool_restore_text": "",
|
||||
"Maintenance_Tool_upgrade_database_noti": "",
|
||||
"Maintenance_Tool_upgrade_database_noti_text": "",
|
||||
"Maintenance_Tool_upgrade_database_text": "",
|
||||
"Maintenance_Tools_Tab_BackupRestore": "",
|
||||
"Maintenance_Tools_Tab_Logging": "",
|
||||
"Maintenance_Tools_Tab_Settings": "",
|
||||
"Maintenance_Tools_Tab_Tools": "",
|
||||
"Maintenance_Tools_Tab_UISettings": "",
|
||||
"Maintenance_arp_status": "",
|
||||
"Maintenance_arp_status_off": "",
|
||||
"Maintenance_arp_status_on": "",
|
||||
"Maintenance_built_on": "",
|
||||
"Maintenance_current_version": "",
|
||||
"Maintenance_database_backup": "",
|
||||
"Maintenance_database_backup_found": "",
|
||||
"Maintenance_database_backup_total": "",
|
||||
"Maintenance_database_lastmod": "",
|
||||
"Maintenance_database_path": "",
|
||||
"Maintenance_database_rows": "",
|
||||
"Maintenance_database_size": "",
|
||||
"Maintenance_lang_selector_apply": "",
|
||||
"Maintenance_lang_selector_empty": "",
|
||||
"Maintenance_lang_selector_lable": "",
|
||||
"Maintenance_lang_selector_text": "",
|
||||
"Maintenance_new_version": "",
|
||||
"Maintenance_themeselector_apply": "",
|
||||
"Maintenance_themeselector_empty": "",
|
||||
"Maintenance_themeselector_lable": "",
|
||||
"Maintenance_themeselector_text": "",
|
||||
"Maintenance_version": "",
|
||||
"NETWORK_DEVICE_TYPES_description": "",
|
||||
"NETWORK_DEVICE_TYPES_name": "",
|
||||
"Navigation_About": "",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Esta é uma configuração de manutenção <b>EXCLUINDO dispositivos</b>. Se habilitado (<code>0</code> está desabilitado), dispositivos que estão <b>Offline</b> e sua data e hora <b>Last Offline</b> são mais antigas que as horas especificadas nesta configuração, serão deletados. Use esta configuração se você quiser remover automaticamente <b>Dispositivos Offline</b> após <code>X</code> horas offline.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Eliminar dispositivos offline após",
|
||||
"LOADED_PLUGINS_description": "Quais plugins carregar. Adicionar plugins pode deixar o aplicativo lento. Leia mais sobre quais plugins precisam ser habilitados, tipos ou opções de escaneamento na <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">documentação de plugins</a>. Plugins descarregados perderão as suas configurações. Somente plugins <code>desabilitados</code> podem ser descarregados.",
|
||||
"LOADED_PLUGINS_name": "Plugins carregados",
|
||||
"LOG_LEVEL_description": "Esta definição permite um registo mais detalhado. Útil para depurar eventos gravados na base de dados.",
|
||||
"LOG_LEVEL_name": "Imprimir registo adicional",
|
||||
"Loading": "Carregando...",
|
||||
"Login_Box": "Introduza a sua palavra-passe",
|
||||
"Login_Default_PWD": "A palavra-passe predefinida “123456” ainda está ativa.",
|
||||
"Login_Info": "As palavra-passes são definidas por meio do plugin Definir palavra-passe. Verifique a <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password\">documentação do SETPWD</a> se tiver problemas para fazer login.",
|
||||
"Login_Psw-box": "Palavra-passe",
|
||||
"Login_Psw_alert": "Alerta de palavra-passe!",
|
||||
"Login_Psw_folder": "na pasta de configuração.",
|
||||
"Login_Psw_new": "nova_palavra-passe",
|
||||
"Login_Psw_run": "Para alterar a palavra-passe, executar:",
|
||||
"Login_Remember": "Lembrar",
|
||||
"Login_Remember_small": "(válido por 7 dias)",
|
||||
"Login_Submit": "Iniciar sessão",
|
||||
"Login_Toggle_Alert_headline": "Alerta de palavra-passe!",
|
||||
"Login_Toggle_Info": "Informações sobre a palavra-passe",
|
||||
"Login_Toggle_Info_headline": "Informações sobre a palavra-passe",
|
||||
"Maint_PurgeLog": "Limpar o registo",
|
||||
"Maint_RestartServer": "Reiniciar o servidor",
|
||||
"Maint_Restart_Server_noti_text": "Tem certeza de que deseja reiniciar o servidor backend? Isso pode causar inconsistência no aplicativo. Faça backup da sua configuração primeiro. <br/> <br/> Nota: Isso pode levar alguns minutos.",
|
||||
"Maintenance_Running_Version": "Versão instalada",
|
||||
"Maintenance_Status": "Situação",
|
||||
"Maintenance_Title": "Ferramentas de manutenção",
|
||||
"Maintenance_Tool_DownloadConfig": "Exportação de definições",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Baixe um backup completo da configuração das Configurações armazenada no arquivo <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "Exportação de dispositivos (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Exportação de dispositivos (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Tem a certeza de que pretende gerar um ficheiro CSV?",
|
||||
"Maintenance_Tool_ExportCSV_text": "Gere um arquivo CSV (valor separado por vírgula) contendo a lista de dispositivos, incluindo os relacionamentos de rede entre os nós de rede e os dispositivos conectados. Você também pode acionar isso acessando esta URL <code>your_NetAlertX_url/php/server/devices.php?action=ExportCSV</code> ou habilitando o plugin <a href=\"settings.php#CSVBCKP_header\">CSV Backup</a>.",
|
||||
"Maintenance_Tool_ImportCSV": "Importação de dispositivos (csv)",
|
||||
"Maintenance_Tool_ImportCSV_noti": "Importação de dispositivos (csv)",
|
||||
"Maintenance_Tool_ImportCSV_noti_text": "Tem certeza de que deseja importar o arquivo CSV? Isso <b>sobrescreverá</b> completamente os dispositivos em seu banco de dados.",
|
||||
"Maintenance_Tool_ImportCSV_text": "Antes de usar esta função, faça um backup. Importe um arquivo CSV (valores separados por vírgula) contendo a lista de dispositivos, incluindo os relacionamentos de rede entre os nós de rede e os dispositivos conectados. Para fazer isso, coloque o arquivo CSV chamado <b>devices.csv</b> na sua pasta <b>/config</b>.",
|
||||
"Maintenance_Tool_ImportConfig_noti": "Importação de configurações (app.conf)",
|
||||
"Maintenance_Tool_ImportPastedCSV": "Importação de dispositivos (csv) (colar)",
|
||||
"Maintenance_Tool_ImportPastedCSV_noti_text": "Tem certeza de que deseja importar o CSV colado? Isso <b>sobrescreverá</b> completamente os dispositivos em seu banco de dados.",
|
||||
"Maintenance_Tool_ImportPastedCSV_text": "Antes de usar esta função, faça um backup. Importe um arquivo CSV (valor separado por vírgula) contendo a lista de Dispositivos, incluindo os relacionamentos de Rede entre os Nós de Rede e os dispositivos conectados.",
|
||||
"Maintenance_Tool_ImportPastedConfig": "Configurações Importar (colar)",
|
||||
"Maintenance_Tool_ImportPastedConfig_noti_text": "Tem certeza de que deseja importar as configurações coladas? Isso irá <b>sobrescrever</b> completamente o arquivo <code>app.conf</code>.",
|
||||
"Maintenance_Tool_ImportPastedConfig_text": "Importa o arquivo <code>app.conf</code> contendo todas as configurações do aplicativo. Você pode querer baixar primeiro o arquivo <code>app.conf</code> com a <b>Exportação de configurações</b>.",
|
||||
"Maintenance_Tool_arpscansw": "Alternar arp-Scan (ligado/desligado)",
|
||||
"Maintenance_Tool_arpscansw_noti": "Ativar ou desativar o arp-Scan",
|
||||
"Maintenance_Tool_arpscansw_noti_text": "Quando o scanner é desligado, permanece desligado até ser novamente ativado.",
|
||||
"Maintenance_Tool_arpscansw_text": "Ligar ou desligar o arp-scan. Quando o scan é desligado, permanece desligado até ser novamente ativado. As varreduras activas não são canceladas.",
|
||||
"Maintenance_Tool_backup": "Cópia de segurança da BD",
|
||||
"Maintenance_Tool_backup_noti": "Cópia de segurança da BD",
|
||||
"Maintenance_Tool_backup_noti_text": "Tem a certeza de que pretende executar a cópia de segurança da BD? Certifique-se de que não está a ser executada nenhuma verificação.",
|
||||
"Maintenance_Tool_backup_text": "Os backups do banco de dados estão localizados no diretório do banco de dados como um zip-archive, nomeado com a data de criação. Não há nenhum número máximo de backups.",
|
||||
"Maintenance_Tool_check_visible": "Desmarque para esconder a coluna.",
|
||||
"Maintenance_Tool_darkmode": "Modos de alternância (escuro/claro)",
|
||||
"Maintenance_Tool_darkmode_noti": "Modos de alternância",
|
||||
"Maintenance_Tool_darkmode_noti_text": "Após a mudança de tema, a página tenta recarregar-se para ativar a alteração. Se necessário, a cache deve ser limpa.",
|
||||
"Maintenance_Tool_darkmode_text": "Alternar entre o modo escuro e o modo claro. Se a alternância não funcionar corretamente, tente limpar a cache do browser. A alteração ocorre no lado do servidor, pelo que afecta todos os dispositivos em utilização.",
|
||||
"Maintenance_Tool_del_ActHistory": "Excluindo a atividade da rede",
|
||||
"Maintenance_Tool_del_ActHistory_noti": "Excluir atividade de rede",
|
||||
"Maintenance_Tool_del_ActHistory_noti_text": "Tem certeza de que deseja redefinir a atividade da rede?",
|
||||
"Maintenance_Tool_del_ActHistory_text": "O gráfico de atividade da rede é redefinido. Isso não afeta os eventos.",
|
||||
"Maintenance_Tool_del_alldev": "Excluir todos os dispositivos",
|
||||
"Maintenance_Tool_del_alldev_noti": "Excluir dispositivos",
|
||||
"Maintenance_Tool_del_alldev_noti_text": "Tem certeza de que deseja excluir todos os dispositivos?",
|
||||
"Maintenance_Tool_del_alldev_text": "Antes de usar esta função, faça um backup. A exclusão não pode ser desfeita. Todos os dispositivos serão excluídos do banco de dados.",
|
||||
"Maintenance_Tool_del_allevents": "Excluir eventos (Repor presença)",
|
||||
"Maintenance_Tool_del_allevents30": "Excluir todos os eventos com mais de 30 dias",
|
||||
"Maintenance_Tool_del_allevents30_noti": "Excluir eventos",
|
||||
"Maintenance_Tool_del_allevents30_noti_text": "Tem certeza de que deseja excluir todos os eventos com mais de 30 dias? Isso redefiniu a presença de todos os dispositivos.",
|
||||
"Maintenance_Tool_del_allevents30_text": "Antes de utilizar esta função, efectue uma cópia de segurança. A eliminação não pode ser anulada. Todos os eventos com mais de 30 dias na base de dados serão eliminados. Nesse momento, a presença de todos os dispositivos será reiniciada. Este facto pode dar origem a sessões inválidas. Isto significa que os dispositivos são apresentados como “presentes” apesar de estarem offline. Uma verificação enquanto o dispositivo em questão está online resolve o problema.",
|
||||
"Maintenance_Tool_del_allevents_noti": "Excluir eventos",
|
||||
"Maintenance_Tool_del_allevents_noti_text": "Tem certeza de que deseja excluir todos os eventos? Isso redefiniu a presença de todos os dispositivos.",
|
||||
"Maintenance_Tool_del_allevents_text": "Antes de usar esta função, faça um backup. A exclusão não pode ser desfeita. Todos os eventos no banco de dados serão excluídos. Nesse momento, a presença de todos os dispositivos será redefinida. Isso pode levar a sessões inválidas. Isso significa que os dispositivos são exibidos como \"presente\" embora estejam offline. Uma varredura enquanto o dispositivo em questão é on-line resolve o problema.",
|
||||
"Maintenance_Tool_del_empty_macs": "Excluir dispositivos com MACs vazios",
|
||||
"Maintenance_Tool_del_empty_macs_noti": "Excluir dispositivos",
|
||||
"Maintenance_Tool_del_empty_macs_noti_text": "Tem certeza de que deseja excluir todos os dispositivos com endereços MAC vazios?<br>(talvez você prefira arquivá-lo)",
|
||||
"Maintenance_Tool_del_empty_macs_text": "Antes de usar esta função, faça um backup. A exclusão não pode ser desfeita. Todos os dispositivos sem MAC serão excluídos do banco de dados.",
|
||||
"Maintenance_Tool_del_selecteddev": "Excluir dispositivos selecionados",
|
||||
"Maintenance_Tool_del_selecteddev_text": "Antes de usar esta função, faça um backup. A exclusão não pode ser desfeita. Dispositivos selecionados serão excluídos do banco de dados.",
|
||||
"Maintenance_Tool_del_unknowndev": "Excluir (desconhecido) Dispositivos",
|
||||
"Maintenance_Tool_del_unknowndev_noti": "Excluir (desconhecido) Dispositivos",
|
||||
"Maintenance_Tool_del_unknowndev_noti_text": "Tem certeza de que deseja excluir todos (desconhecido) e (nome não encontrado) dispositivos?",
|
||||
"Maintenance_Tool_del_unknowndev_text": "Antes de usar esta função, faça um backup. A exclusão não pode ser desfeita. Todos os dispositivos nomeados (não conhecidos) serão excluídos do banco de dados.",
|
||||
"Maintenance_Tool_displayed_columns_text": "Altere a visibilidade e a ordem das colunas na página <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Dispositivos</b></a>.",
|
||||
"Maintenance_Tool_drag_me": "Arraste-me para reordenar colunas.",
|
||||
"Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text",
|
||||
"Maintenance_Tool_purgebackup": "Limpar cópias de segurança",
|
||||
"Maintenance_Tool_purgebackup_noti": "Limpar cópias de segurança",
|
||||
"Maintenance_Tool_purgebackup_noti_text": "Tem certeza de que deseja excluir todos os backups exceto os últimos 3?",
|
||||
"Maintenance_Tool_purgebackup_text": "Todos os outros backups serão excluídos exceto para os últimos 3 backups.",
|
||||
"Maintenance_Tool_restore": "Restauração de DB",
|
||||
"Maintenance_Tool_restore_noti": "Restauração de DB",
|
||||
"Maintenance_Tool_restore_noti_text": "Tem a certeza de que quer executar a Restauração DB? Certifique-se de que nenhuma varredura está funcionando atualmente.",
|
||||
"Maintenance_Tool_restore_text": "O backup mais recente pode ser restaurado através do botão, mas os backups mais antigos só podem ser restaurados manualmente. Após a restauração, faça uma verificação de integridade no banco de dados para segurança, caso o db estivesse atualmente em acesso de gravação quando o backup foi criado.",
|
||||
"Maintenance_Tool_upgrade_database_noti": "Atualizar a base de dados",
|
||||
"Maintenance_Tool_upgrade_database_noti_text": "Tem certeza de que deseja atualizar o banco de dados?<br>(talvez você prefira arquivá-lo)",
|
||||
"Maintenance_Tool_upgrade_database_text": "Este botão actualizará a base de dados para ativar o gráfico Atividade de rede nas últimas 12 horas. Faça uma cópia de segurança da sua base de dados em caso de problemas.",
|
||||
"Maintenance_Tools_Tab_BackupRestore": "Backup / Restauração",
|
||||
"Maintenance_Tools_Tab_Logging": "Logs",
|
||||
"Maintenance_Tools_Tab_Settings": "Configurações",
|
||||
"Maintenance_Tools_Tab_Tools": "Ferramentas",
|
||||
"Maintenance_Tools_Tab_UISettings": "Configurações de interface",
|
||||
"Maintenance_arp_status": "Estado de digitalização",
|
||||
"Maintenance_arp_status_off": "está actualmente desativado",
|
||||
"Maintenance_arp_status_on": "scan(s) atualmente em execução",
|
||||
"Maintenance_built_on": "Construído em",
|
||||
"Maintenance_current_version": "Estás actualizado. Confira o que <a href=\"https://github.com/jokob-sk/NetAlertX/issues/138\" target=\"_blank\"> Estou trabalhando em</a>.",
|
||||
"Maintenance_database_backup": "Backups DB",
|
||||
"Maintenance_database_backup_found": "foram encontrados backups",
|
||||
"Maintenance_database_backup_total": "uso total do disco",
|
||||
"Maintenance_database_lastmod": "Última modificação",
|
||||
"Maintenance_database_path": "Caminho da base de dados",
|
||||
"Maintenance_database_rows": "Tabela (linhas)",
|
||||
"Maintenance_database_size": "Tamanho de banco de dados",
|
||||
"Maintenance_lang_selector_apply": "Aplicar",
|
||||
"Maintenance_lang_selector_empty": "Selecionar a língua",
|
||||
"Maintenance_lang_selector_lable": "Selecionar a língua",
|
||||
"Maintenance_lang_selector_text": "A mudança ocorre no lado do cliente, por isso afeta apenas o navegador atual.",
|
||||
"Maintenance_new_version": "Uma nova versão está disponível. Confira as <a href=\"https://github.com/jokob-sk/NetAlertX/releases\" target=\"_blank\">notas de lançamento</a>.",
|
||||
"Maintenance_themeselector_apply": "Aplicar",
|
||||
"Maintenance_themeselector_empty": "Escolha uma Skin",
|
||||
"Maintenance_themeselector_lable": "Selecionar Skin",
|
||||
"Maintenance_themeselector_text": "A mudança ocorre no lado do servidor, por isso afeta todos os dispositivos em uso.",
|
||||
"Maintenance_version": "Atualizações de aplicativos",
|
||||
"NETWORK_DEVICE_TYPES_description": "Quais tipos de dispositivos podem ser usados como dispositivos de rede na visualização de rede. O tipo de dispositivo tem de corresponder exatamente à configuração <code>Type</code> em um dispositivo específico em detalhes do dispositivo. Adicione-o no Dispositivo através do botão <code>+</code>. Não remova os tipos existentes, apenas adicione novos.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Tipos de dispositivo de rede",
|
||||
"Navigation_About": "Sobre a",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_Devices": "",
|
||||
"Navigation_Donations": "",
|
||||
"Navigation_Events": "",
|
||||
"Navigation_Integrations": "",
|
||||
"Navigation_Maintenance": "",
|
||||
"Navigation_Monitoring": "",
|
||||
"Navigation_Network": "",
|
||||
"Navigation_Notifications": "",
|
||||
"Navigation_Plugins": "",
|
||||
"Navigation_Devices": "Dispositivos",
|
||||
"Navigation_Donations": "Doações",
|
||||
"Navigation_Events": "Eventos",
|
||||
"Navigation_Integrations": "Integrações",
|
||||
"Navigation_Maintenance": "Manutenção",
|
||||
"Navigation_Monitoring": "Acompanhamento",
|
||||
"Navigation_Network": "Rede",
|
||||
"Navigation_Notifications": "Notificações",
|
||||
"Navigation_Plugins": "Plugins",
|
||||
"Navigation_Presence": "",
|
||||
"Navigation_Report": "",
|
||||
"Navigation_Settings": "",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
@@ -717,5 +741,5 @@
|
||||
"settings_system_label": "",
|
||||
"settings_update_item_warning": "",
|
||||
"test_event_icon": "",
|
||||
"test_event_tooltip": ""
|
||||
}
|
||||
"test_event_tooltip": "Guarde as alterações antes de testar as definições."
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"About_Design": "Разработан:",
|
||||
"About_Exit": "Зарегистрироваться",
|
||||
"About_Title": "Сетевой сканер и система уведомлений",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_AppEventProcessed": "Обработанный",
|
||||
"AppEvents_DateTimeCreated": "Журнал",
|
||||
"AppEvents_Extra": "Дополнительно",
|
||||
"AppEvents_GUID": "GUID события приложения",
|
||||
@@ -22,7 +22,7 @@
|
||||
"AppEvents_ObjectPlugin": "Связанный плагин",
|
||||
"AppEvents_ObjectPrimaryID": "Первичный ID",
|
||||
"AppEvents_ObjectSecondaryID": "Вторичный ID",
|
||||
"AppEvents_ObjectStatus": "Состояние (во время входа в систему)",
|
||||
"AppEvents_ObjectStatus": "Зарегистрированный статус",
|
||||
"AppEvents_ObjectStatusColumn": "Колонка состояния",
|
||||
"AppEvents_ObjectType": "Тип объекта",
|
||||
"AppEvents_Plugin": "Плагин",
|
||||
@@ -70,7 +70,7 @@
|
||||
"DevDetail_Copy_Device_Tooltip": "Скопируйте данные с устройства из раскрывающегося списка. Все на этой странице будет перезаписано",
|
||||
"DevDetail_CustomProperties_Title": "Пользовательские свойства",
|
||||
"DevDetail_CustomProps_reset_info": "Это удалит ваши пользовательские свойства на этом устройстве и вернет их к значению по умолчанию.",
|
||||
"DevDetail_DisplayFields_Title": "Дисплей",
|
||||
"DevDetail_DisplayFields_Title": "Отображение",
|
||||
"DevDetail_EveandAl_AlertAllEvents": "Оповещения о событиях",
|
||||
"DevDetail_EveandAl_AlertDown": "Оповещение о доступности",
|
||||
"DevDetail_EveandAl_Archived": "Архив",
|
||||
@@ -225,7 +225,7 @@
|
||||
"Device_TableHead_Name": "Имя",
|
||||
"Device_TableHead_NetworkSite": "Сайт устройства",
|
||||
"Device_TableHead_Owner": "Владелец",
|
||||
"Device_TableHead_Parent_MAC": "MAC род. узла",
|
||||
"Device_TableHead_Parent_MAC": "Родительский узел сети",
|
||||
"Device_TableHead_Port": "Порт",
|
||||
"Device_TableHead_PresentLastScan": "Присутствие",
|
||||
"Device_TableHead_RowID": "ID строки",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "Все",
|
||||
"Device_Title": "Устройства",
|
||||
"Devices_Filters": "Фильтры",
|
||||
"Donations_Others": "Другие",
|
||||
"Donations_Platforms": "Спонсорские платформы",
|
||||
"Donations_Text": "Привет 👋! </br> Спасибо, что нажали на этот пункт меню 😅 </br> </br> Я пытаюсь собрать пожертвования, чтобы сделать ваше программное обеспечение лучше. Кроме того, это поможет мне не перегореть, и я смогу дольше поддерживать это приложение. Любое небольшое спонсорство (периодическое или нет) вызывает у меня желание приложить больше усилий к этому приложению. </br> Мне бы хотелось сократить свою рабочую неделю и в оставшееся время полностью сосредоточиться на NetAlertX. Вы получите больше функциональности, более усовершенствованное приложение и меньше ошибок. </br> </br> Спасибо за прочтение – буду благодарен за любую поддержку❤🙏 </br> </br> TL;DR: Поддержав меня, вы получаете: </br> </br> <ul><li>Регулярные обновления для обеспечения безопасности ваших данных и семьи 🔄</li><li>Меньше ошибок 🐛🔫</li><li>Лучшую функциональность➕</li><li>Я не выгораю 🔥🤯</li><li>Меньше поспешных релизов 💨</li><li>Лучшая документация📚</li><li>Быстрее и лучше поддержка по вопросам 🆘</li></ul> </br> 📧Напишите мне на <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a> если вы хотите связаться или если следует добавить другие спонсорские платформы. </br>",
|
||||
"Donations_Title": "Пожертвования",
|
||||
"ENABLE_PLUGINS_description": "Включает функциональность <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">плагинов.</a> Загрузка плагинов требует больше аппаратных ресурсов, поэтому вы можете отключить их в маломощной системе.",
|
||||
"ENABLE_PLUGINS_name": "Разрешить плагины",
|
||||
"ENCRYPTION_KEY_description": "Ключ шифрования данных.",
|
||||
@@ -338,7 +334,7 @@
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Это настройка обслуживания <b>УДАЛЕНИЕ устройств</b>. Если этот параметр включен (<code>0</code> отключен), устройства, помеченные как <b>Новое устройство</b>, будут удалены, если время их <b>Первого сеанса</b> было старше указанных в этой настройке часов. Используйте этот параметр, если вы хотите автоматически удалять <b>Новые устройства</b> через <code>X</code> часов.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Удалить новые устройства после",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Это настройка обслуживания <b>УДАЛЕНИЕ устройств</b>. Если этот параметр включен (<code>0</code> отключен), устройства, которые находятся <b>в Offline</b> и их дата и время <b>последнего Offline</b> старше, чем часы, указанные в этом параметре. Используйте этот параметр, если вы хотите автоматически удалять <b>Offline устройства</b> после <code>X</code> часов отсутствия в сети.",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Это настройка обслуживания <b>УДАЛЕНИЕ устройств</b>. Если этот параметр включен (<code>0</code> отключен), устройства, которые находятся <b>в Offline</b> и их дата и время <b>последнего подключения</b> старше, чем часы, указанные в этом параметре. Используйте этот параметр, если вы хотите автоматически удалять <b>Offline устройства</b> после <code>X</code> часов отсутствия в сети.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Удалить устройства Offline после",
|
||||
"LOADED_PLUGINS_description": "Какие плагины загружать. Добавление плагинов может замедлить работу приложения. Подробнее о том, какие плагины необходимо включить, их типах или параметрах сканирования, читайте в <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md \">Документация по плагинам</a>. Выгруженные плагины потеряют ваши настройки. Можно выгрузить только <code>отключенные</code> плагины.",
|
||||
"LOADED_PLUGINS_name": "Загруженные плагины",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Инструменты обслуживания",
|
||||
"Maintenance_Tool_DownloadConfig": "Экспорт настроек",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Загрузите полную резервную копию конфигурации настроек, хранящуюся в файле <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Экспорт Workflow",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Загрузите полную резервную копию ваших Workflow, хранящихся в файле <code> hairpflows.json </code>.",
|
||||
"Maintenance_Tool_ExportCSV": "Экспорт устройств (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Экспорт устройств (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Вы уверены, что хотите создать файл CSV?",
|
||||
@@ -465,7 +463,7 @@
|
||||
"NETWORK_DEVICE_TYPES_description": "Какие типы устройств разрешено использовать в качестве сетевых устройств в представлении Сеть. Тип устройства должен точно соответствовать настройке <code>Type</code> для конкретного устройства в сведениях об устройстве. Добавьте его на устройство с помощью кнопки <code>+</code>. Не удаляйте существующие типы, а только добавляйте новые.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Типы сетевых устройств",
|
||||
"Navigation_About": "О NetAlertX",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "События приложения",
|
||||
"Navigation_Devices": "Устройства",
|
||||
"Navigation_Donations": "Пожертвования",
|
||||
"Navigation_Events": "События",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Автоматическое обновление интерфейса",
|
||||
"VERSION_description": "Вспомогательное значение версии или метки времени, позволяющее проверить, было ли приложение обновлено.",
|
||||
"VERSION_name": "Версия или временная метка",
|
||||
"WF_Action_Add": "Добавить действие",
|
||||
"WF_Action_field": "Поле",
|
||||
"WF_Action_type": "Тип",
|
||||
"WF_Action_value": "Значение",
|
||||
"WF_Actions": "Действия",
|
||||
"WF_Add": "Добавить Workflow",
|
||||
"WF_Add_Condition": "Добавить условие",
|
||||
"WF_Add_Group": "Добавить группу",
|
||||
"WF_Condition_field": "Поле",
|
||||
"WF_Condition_operator": "Оператор",
|
||||
"WF_Condition_value": "Значение",
|
||||
"WF_Conditions": "Условия",
|
||||
"WF_Conditions_logic_rules": "Правила логики",
|
||||
"WF_Duplicate": "Дублировать Workflow",
|
||||
"WF_Enabled": "Включить Workflow",
|
||||
"WF_Export": "Экспорт Workflow",
|
||||
"WF_Export_Copy": "Скопируйте приведенный ниже Workflow и импортируйте его, где это необходимо.",
|
||||
"WF_Import": "Импорт Workflow",
|
||||
"WF_Import_Copy": "Вставьте в Workflow, который вы скопировали ранее.",
|
||||
"WF_Name": "Имя Workflow",
|
||||
"WF_Remove": "Удалить Workflow",
|
||||
"WF_Remove_Copy": "Вы хотите удалить этот Workflow?",
|
||||
"WF_Save": "Сохранить Workflow",
|
||||
"WF_Trigger": "Триггер",
|
||||
"WF_Trigger_event_type": "Тип события",
|
||||
"WF_Trigger_type": "Тип триггера",
|
||||
"add_icon_event_icon": "fa-square-plus",
|
||||
"add_icon_event_tooltip": "Добавить новую иконку",
|
||||
"add_option_event_icon": "fa-square-plus",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. <b>Проверка не выполняется.</b>",
|
||||
"test_event_icon": "fa-vial-circle-check",
|
||||
"test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,442 +1,440 @@
|
||||
{
|
||||
"API_CUSTOM_SQL_description": "",
|
||||
"API_CUSTOM_SQL_name": "",
|
||||
"API_TOKEN_description": "",
|
||||
"API_TOKEN_name": "",
|
||||
"API_display_name": "",
|
||||
"API_icon": "",
|
||||
"About_Design": "",
|
||||
"API_CUSTOM_SQL_description": "Özel bir SQL sorgusu belirleyebilir ve bu sorgu ile bir JSON dosyası oluşturabilir, ardından bu dosyayı <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\"><code>table_custom_endpoint.json</code> dosya uç noktası</a> üzerinden erişime açabilirsiniz.",
|
||||
"API_CUSTOM_SQL_name": "Kişiselleştirilmiş endpoint",
|
||||
"API_TOKEN_description": "Güvenli iletişim için API token'ı. Bir tane oluşturun veya herhangi bir değer girin. Bu token, istek başlığında gönderilir ve <code>SYNC</code> eklentisi, GraphQL sunucusu ve diğer API uç noktalarında kullanılır. API uç noktalarını, <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md\" target=\"_blank\">API belgelerinde</a> açıklanan şekilde özel entegrasyonlar oluşturmak için kullanabilirsiniz.",
|
||||
"API_TOKEN_name": "API token",
|
||||
"API_display_name": "API",
|
||||
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
|
||||
"About_Design": "Tasarım Amacı:",
|
||||
"About_Exit": "Oturum kapat",
|
||||
"About_Title": "",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_DateTimeCreated": "",
|
||||
"About_Title": "Ağ güvenlik tarayıcısı & bildirim çerçevesi",
|
||||
"AppEvents_AppEventProcessed": "İşlendi",
|
||||
"AppEvents_DateTimeCreated": "Giriş yapıldı",
|
||||
"AppEvents_Extra": "Ekstra",
|
||||
"AppEvents_GUID": "",
|
||||
"AppEvents_GUID": "Uygulama Olayı GUID'si",
|
||||
"AppEvents_Helper1": "Yardımcı 1",
|
||||
"AppEvents_Helper2": "Yardımcı 2",
|
||||
"AppEvents_Helper3": "Yardımcı 3",
|
||||
"AppEvents_ObjectForeignKey": "",
|
||||
"AppEvents_ObjectIndex": "",
|
||||
"AppEvents_ObjectIsArchived": "",
|
||||
"AppEvents_ObjectIsNew": "",
|
||||
"AppEvents_ObjectPlugin": "",
|
||||
"AppEvents_ObjectPrimaryID": "",
|
||||
"AppEvents_ObjectSecondaryID": "",
|
||||
"AppEvents_ObjectStatus": "",
|
||||
"AppEvents_ObjectStatusColumn": "",
|
||||
"AppEvents_ObjectType": "",
|
||||
"AppEvents_Plugin": "",
|
||||
"AppEvents_Type": "",
|
||||
"BackDevDetail_Actions_Ask_Run": "Komutları çalıştırmak istiyor musunuz?",
|
||||
"BackDevDetail_Actions_Not_Registered": "",
|
||||
"BackDevDetail_Actions_Title_Run": "Komutu çalıştır",
|
||||
"BackDevDetail_Copy_Ask": "",
|
||||
"AppEvents_ObjectForeignKey": "Yabancı Anahtar",
|
||||
"AppEvents_ObjectIndex": "Dizin",
|
||||
"AppEvents_ObjectIsArchived": "Arşivlendi (kayıt zamanı itibariyle)",
|
||||
"AppEvents_ObjectIsNew": "Yeni (kayıt zamanında)",
|
||||
"AppEvents_ObjectPlugin": "Bağlantılı Eklenti",
|
||||
"AppEvents_ObjectPrimaryID": "Birincil ID",
|
||||
"AppEvents_ObjectSecondaryID": "İkincil ID",
|
||||
"AppEvents_ObjectStatus": "Kaydedilmiş Durum",
|
||||
"AppEvents_ObjectStatusColumn": "Durum sütunu",
|
||||
"AppEvents_ObjectType": "Nesne Tipi",
|
||||
"AppEvents_Plugin": "Eklenti",
|
||||
"AppEvents_Type": "Tür",
|
||||
"BackDevDetail_Actions_Ask_Run": "İşlemi gerçekleştirmek istiyor musunuz?",
|
||||
"BackDevDetail_Actions_Not_Registered": "Eylem kaydedilmedi: ",
|
||||
"BackDevDetail_Actions_Title_Run": "Eylemi çalıştır",
|
||||
"BackDevDetail_Copy_Ask": "Açılır menüden cihazın detaylarını kopyala (Bu sayfadaki her şeyin üzerine yazılacak)?",
|
||||
"BackDevDetail_Copy_Title": "Ayrıntıları kopyala",
|
||||
"BackDevDetail_Tools_WOL_error": "Komut çalıştırılmadı.",
|
||||
"BackDevDetail_Tools_WOL_okay": "Komut çalıştırıldı.",
|
||||
"BackDevices_Arpscan_disabled": "",
|
||||
"BackDevices_Arpscan_enabled": "",
|
||||
"BackDevices_Backup_CopError": "",
|
||||
"BackDevices_Backup_Failed": "",
|
||||
"BackDevices_Backup_okay": "",
|
||||
"BackDevices_Arpscan_disabled": "Arp-Scan Devre Dışı",
|
||||
"BackDevices_Arpscan_enabled": "Arp-Scan Etkin",
|
||||
"BackDevices_Backup_CopError": "Orijinal veritabanı kaydedilemedi.",
|
||||
"BackDevices_Backup_Failed": "Yedekleme kısmi olarak başarılı bir şekilde çalıştırıldı. Arşiv oluşturulamadı ya da boş.",
|
||||
"BackDevices_Backup_okay": "Yedekleme, yeni arşiv ile başarılı bir şekilde gerçekleştirildi",
|
||||
"BackDevices_DBTools_DelDevError_a": "Cihaz silinirken hata oluştu",
|
||||
"BackDevices_DBTools_DelDevError_b": "Cihazlar silinirken hata oluştu",
|
||||
"BackDevices_DBTools_DelDev_a": "Cihaz silindi",
|
||||
"BackDevices_DBTools_DelDev_b": "Cihazlar silindi",
|
||||
"BackDevices_DBTools_DelEvents": "",
|
||||
"BackDevices_DBTools_DelEventsError": "",
|
||||
"BackDevices_DBTools_ImportCSV": "",
|
||||
"BackDevices_DBTools_ImportCSVError": "",
|
||||
"BackDevices_DBTools_ImportCSVMissing": "",
|
||||
"BackDevices_DBTools_Purge": "",
|
||||
"BackDevices_DBTools_UpdDev": "Cihaz başarılı bir şekilde güncellendi",
|
||||
"BackDevices_DBTools_DelEvents": "Eventler (olay kayıtları) silinmiş durumda",
|
||||
"BackDevices_DBTools_DelEventsError": "Eventler (olay kayıtları) silerken hata oluştu",
|
||||
"BackDevices_DBTools_ImportCSV": "CSV dosyasındaki aygıtlar başarıyla içe aktarıldı.",
|
||||
"BackDevices_DBTools_ImportCSVError": "CSV dosyası içe aktarılamadı. Formatın doğru olduğundan emin olun.",
|
||||
"BackDevices_DBTools_ImportCSVMissing": "CSV dosyası <b>/config/devices.csv</b> altında bulunamadı",
|
||||
"BackDevices_DBTools_Purge": "Geriye dönük yedekler kaldırıldı",
|
||||
"BackDevices_DBTools_UpdDev": "Cihaz başarılı bir şekilde güncellendi. Ana aygıtlar listesi, bir tarama işlemi devam ediyorsa yeniden yüklenmesi için biraz zaman alabilir.",
|
||||
"BackDevices_DBTools_UpdDevError": "Cihaz güncellenirken hata oluştu",
|
||||
"BackDevices_DBTools_Upgrade": "Veritabanı başarılı bir şekilde güncellendi",
|
||||
"BackDevices_DBTools_UpgradeError": "Veritabanı güncellenemedi",
|
||||
"BackDevices_Device_UpdDevError": "Cihazlar güncellenirken hata oluştu, daha sonra tekrar deneyiz. Veritabanı, devam eden bir komut nedeniyle kilitli olabilir.",
|
||||
"BackDevices_Restore_CopError": "",
|
||||
"BackDevices_Restore_Failed": "",
|
||||
"BackDevices_Restore_okay": "",
|
||||
"BackDevices_darkmode_disabled": "",
|
||||
"BackDevices_darkmode_enabled": "",
|
||||
"CLEAR_NEW_FLAG_description": "",
|
||||
"CLEAR_NEW_FLAG_name": "",
|
||||
"CustProps_cant_remove": "",
|
||||
"DAYS_TO_KEEP_EVENTS_description": "",
|
||||
"DAYS_TO_KEEP_EVENTS_name": "",
|
||||
"DISCOVER_PLUGINS_description": "",
|
||||
"DISCOVER_PLUGINS_name": "",
|
||||
"DevDetail_Copy_Device_Title": "",
|
||||
"DevDetail_Copy_Device_Tooltip": "",
|
||||
"DevDetail_CustomProperties_Title": "",
|
||||
"DevDetail_CustomProps_reset_info": "",
|
||||
"DevDetail_DisplayFields_Title": "",
|
||||
"DevDetail_EveandAl_AlertAllEvents": "",
|
||||
"DevDetail_EveandAl_AlertDown": "",
|
||||
"DevDetail_EveandAl_Archived": "",
|
||||
"BackDevices_Restore_CopError": "Orijinal veritabanı kaydedilemedi.",
|
||||
"BackDevices_Restore_Failed": "Geri yükleme başarısız oldu. Lütfen yedeği manuel olarak geri yükleyin.",
|
||||
"BackDevices_Restore_okay": "Geri yükleme başarılı bir şekilde gerçekleştirildi.",
|
||||
"BackDevices_darkmode_disabled": "Karanlık mod devre dışı bırakıldı",
|
||||
"BackDevices_darkmode_enabled": "Karanlık mod etkinleştirildi",
|
||||
"CLEAR_NEW_FLAG_description": "Eğer etkinleştirilmişse (<code>0</code> devre dışı bırakılmıştır), <b>Yeni Cihaz</b> olarak işaretlenen cihazlar, belirlenen saat cinsinden süre sınırı, <b>İlk Oturum</b> zamanlarını aşarsa işaretlenmemiş hale gelir.",
|
||||
"CLEAR_NEW_FLAG_name": "Yeni bayrağını kaldır",
|
||||
"CustProps_cant_remove": "Kaldırılamaz, en az bir özellik gereklidir.",
|
||||
"DAYS_TO_KEEP_EVENTS_description": "Bu bir bakım ayarıdır. Bu, saklanacak olay girişlerinin gün cinsinden sayısını belirtir. Daha eski tüm olaylar periyodik olarak silinecektir. Ayrıca Eklenti Olay Geçmişi üzerinde de geçerlidir.",
|
||||
"DAYS_TO_KEEP_EVENTS_name": "Şu tarihten eski olayları sil",
|
||||
"DISCOVER_PLUGINS_description": "Bu seçeneği devre dışı bırakmak, başlatma süresini ve ayarların kaydedilmesini hızlandırır. Devre dışı bırakıldığında, eklentiler keşfedilmez ve <code>LOADED_PLUGINS</code> ayarına yeni eklentiler eklenemez.",
|
||||
"DISCOVER_PLUGINS_name": "Eklentileri keşfet",
|
||||
"DevDetail_Copy_Device_Title": "Cihazdan detayları kopyala",
|
||||
"DevDetail_Copy_Device_Tooltip": "Aşağıdaki açılır listeden cihazın detaylarını kopyalayın. Bu sayfadaki her şey üzerine yazılacaktır",
|
||||
"DevDetail_CustomProperties_Title": "Özelleştirilmiş Özellikler",
|
||||
"DevDetail_CustomProps_reset_info": "Bu, bu cihazdaki özelleştirilmiş özelliklerinizi kaldıracak ve varsayılan değere sıfırlayacaktır.",
|
||||
"DevDetail_DisplayFields_Title": "Görüntüle",
|
||||
"DevDetail_EveandAl_AlertAllEvents": "Alarm Olayları",
|
||||
"DevDetail_EveandAl_AlertDown": "Alarm Düşüşü",
|
||||
"DevDetail_EveandAl_Archived": "Arşivlenmiş",
|
||||
"DevDetail_EveandAl_NewDevice": "Yeni Cihaz",
|
||||
"DevDetail_EveandAl_NewDevice_Tooltip": "",
|
||||
"DevDetail_EveandAl_RandomMAC": "",
|
||||
"DevDetail_EveandAl_ScanCycle": "",
|
||||
"DevDetail_EveandAl_ScanCycle_a": "",
|
||||
"DevDetail_EveandAl_ScanCycle_z": "",
|
||||
"DevDetail_EveandAl_Skip": "",
|
||||
"DevDetail_EveandAl_Title": "",
|
||||
"DevDetail_Events_CheckBox": "",
|
||||
"DevDetail_GoToNetworkNode": "",
|
||||
"DevDetail_Icon": "",
|
||||
"DevDetail_Icon_Descr": "",
|
||||
"DevDetail_EveandAl_NewDevice_Tooltip": "Cihaz için Yeni durumunu gösterecek ve Yeni Cihazlar filtresi aktif olduğunda listelere dahil edecektir. Bildirimleri etkilemez.",
|
||||
"DevDetail_EveandAl_RandomMAC": "Rastgele MAC",
|
||||
"DevDetail_EveandAl_ScanCycle": "Cihazı tara",
|
||||
"DevDetail_EveandAl_ScanCycle_a": "Cihaz Tarama",
|
||||
"DevDetail_EveandAl_ScanCycle_z": "Cihazı Sakın Etme",
|
||||
"DevDetail_EveandAl_Skip": "Tekrarlanan bildirimleri atla",
|
||||
"DevDetail_EveandAl_Title": "Bildirim konfigürasyonu",
|
||||
"DevDetail_Events_CheckBox": "Bağlantı Olaylarını Gizle",
|
||||
"DevDetail_GoToNetworkNode": "Verilen düğümün Ağ sayfasına gidin.",
|
||||
"DevDetail_Icon": "İkon",
|
||||
"DevDetail_Icon_Descr": "fa- öneki olmadan veya tam sınıfa sahip bir font awesome simge adı girin, örneğin: fa fa-brands fa-apple.",
|
||||
"DevDetail_Loading": "YÜkleniyor...",
|
||||
"DevDetail_MainInfo_Comments": "Yorumlar",
|
||||
"DevDetail_MainInfo_Favorite": "",
|
||||
"DevDetail_MainInfo_Favorite": "Favori",
|
||||
"DevDetail_MainInfo_Group": "Grup",
|
||||
"DevDetail_MainInfo_Location": "Konum",
|
||||
"DevDetail_MainInfo_Name": "İsim",
|
||||
"DevDetail_MainInfo_Network": "",
|
||||
"DevDetail_MainInfo_Network_Port": "",
|
||||
"DevDetail_MainInfo_Network_Site": "",
|
||||
"DevDetail_MainInfo_Network_Title": "",
|
||||
"DevDetail_MainInfo_Network": "<i class=\"fa fa-server\"></i> Makine (MAC)",
|
||||
"DevDetail_MainInfo_Network_Port": "<i class=\"fa fa-ethernet\"></i> Port",
|
||||
"DevDetail_MainInfo_Network_Site": "Alan",
|
||||
"DevDetail_MainInfo_Network_Title": "Network",
|
||||
"DevDetail_MainInfo_Owner": "Sahip",
|
||||
"DevDetail_MainInfo_SSID": "",
|
||||
"DevDetail_MainInfo_Title": "",
|
||||
"DevDetail_MainInfo_Type": "",
|
||||
"DevDetail_MainInfo_Vendor": "",
|
||||
"DevDetail_MainInfo_mac": "",
|
||||
"DevDetail_Network_Node_hover": "",
|
||||
"DevDetail_Network_Port_hover": "",
|
||||
"DevDetail_Nmap_Scans": "",
|
||||
"DevDetail_Nmap_Scans_desc": "",
|
||||
"DevDetail_Nmap_buttonDefault": "",
|
||||
"DevDetail_Nmap_buttonDefault_text": "",
|
||||
"DevDetail_MainInfo_SSID": "SSID",
|
||||
"DevDetail_MainInfo_Title": "Genel Bilgiler",
|
||||
"DevDetail_MainInfo_Type": "Tür",
|
||||
"DevDetail_MainInfo_Vendor": "Üretici",
|
||||
"DevDetail_MainInfo_mac": "MAC",
|
||||
"DevDetail_Network_Node_hover": "Cihazın bağlı olduğu üst ağ cihazını seçerek Ağ ağacının doldurulmasını sağlayın.",
|
||||
"DevDetail_Network_Port_hover": "Bu cihazın, üst ağ cihazı üzerindeki bağlı olduğu port. Boş bırakılırsa, Ağ ağacında bir Wi-Fi simgesi görüntülenir.",
|
||||
"DevDetail_Nmap_Scans": "Manuel Nmap Taramaları",
|
||||
"DevDetail_Nmap_Scans_desc": "Buradan manuel NMAP taramaları gerçekleştirebilirsiniz. Ayrıca, Services & Ports (NMAP) eklentisi aracılığıyla düzenli otomatik NMAP taramaları da planlayabilirsiniz. Daha fazla bilgi için <a href='/settings.php' target='_blank'>Ayarlar</a> sayfasına göz atın",
|
||||
"DevDetail_Nmap_buttonDefault": "Standart Tarama",
|
||||
"DevDetail_Nmap_buttonDefault_text": "Standart Tarama: Nmap, her bir protokol için en yaygın 1.000 portu tarayarak TCP’nin %93’ünü ve UDP’nin %49’unu tespit eder. (yaklaşık 5 saniyelik süreyle)",
|
||||
"DevDetail_Nmap_buttonDetail": "Detaylı Tarama",
|
||||
"DevDetail_Nmap_buttonDetail_text": "",
|
||||
"DevDetail_Nmap_buttonDetail_text": "Detaylı Tarama: Varsayılan taramaya ek olarak, OS tespiti, sürüm tespiti, betik taraması ve traceroute özellikleri etkinleştirilmiştir. (30 saniye veya daha uzun sürebilir)",
|
||||
"DevDetail_Nmap_buttonFast": "Hızlı Tarama",
|
||||
"DevDetail_Nmap_buttonFast_text": "",
|
||||
"DevDetail_Nmap_buttonSkipDiscovery": "",
|
||||
"DevDetail_Nmap_buttonSkipDiscovery_text": "",
|
||||
"DevDetail_Nmap_buttonFast_text": "Hızlı Tarama: Varsayılan taramadan daha az portu (100) tarar (birkaç saniye sürer)",
|
||||
"DevDetail_Nmap_buttonSkipDiscovery": "Ağ cihazı keşfini atla",
|
||||
"DevDetail_Nmap_buttonSkipDiscovery_text": "Ağ cihazı keşfini atla (-Pn seçeneği): Host keşfi yapılmadan varsayılan tarama",
|
||||
"DevDetail_Nmap_resultsLink": "Tarama başlattıktan sonra bu sayfadan çıkabilirsiniz. Sonuçlara <code>app_front.log</code> dosyasından da ulaşılabilir.",
|
||||
"DevDetail_Owner_hover": "",
|
||||
"DevDetail_Owner_hover": "Cihazın sahibi kimdir? Serbest metin kutusu.",
|
||||
"DevDetail_Periodselect_All": "Tüm Bilgi",
|
||||
"DevDetail_Periodselect_LastMonth": "Geçen Ay",
|
||||
"DevDetail_Periodselect_LastWeek": "Geçen Hafta",
|
||||
"DevDetail_Periodselect_LastYear": "Geçen Yıl",
|
||||
"DevDetail_Periodselect_today": "Bugün",
|
||||
"DevDetail_Run_Actions_Title": "<i class=\"fa fa-play\"></i>Komutu cihazda çalıştır",
|
||||
"DevDetail_Run_Actions_Tooltip": "",
|
||||
"DevDetail_Run_Actions_Tooltip": "Mevcut cihaz üzerinde açılır menüden bir işlem çalıştırın.",
|
||||
"DevDetail_SessionInfo_FirstSession": "İlk Oturum",
|
||||
"DevDetail_SessionInfo_LastIP": "Son IP",
|
||||
"DevDetail_SessionInfo_LastSession": "",
|
||||
"DevDetail_SessionInfo_StaticIP": "",
|
||||
"DevDetail_SessionInfo_LastSession": "Son Çevrimdışı",
|
||||
"DevDetail_SessionInfo_StaticIP": "Statik IP",
|
||||
"DevDetail_SessionInfo_Status": "Durum",
|
||||
"DevDetail_SessionInfo_Title": "Oturum Bİlgisi",
|
||||
"DevDetail_SessionTable_Additionalinfo": "Ek bilgi",
|
||||
"DevDetail_SessionTable_Connection": "Bağlantı",
|
||||
"DevDetail_SessionTable_Disconnection": "",
|
||||
"DevDetail_SessionTable_Disconnection": "Bağlantıyı Kes",
|
||||
"DevDetail_SessionTable_Duration": "Süre",
|
||||
"DevDetail_SessionTable_IP": "IP",
|
||||
"DevDetail_SessionTable_Order": "Sıra",
|
||||
"DevDetail_Shortcut_CurrentStatus": "Mevcut Durum",
|
||||
"DevDetail_Shortcut_DownAlerts": "",
|
||||
"DevDetail_Shortcut_Presence": "",
|
||||
"DevDetail_Shortcut_DownAlerts": "Kapalı Alarmlar",
|
||||
"DevDetail_Shortcut_Presence": "Mevcudiyet",
|
||||
"DevDetail_Shortcut_Sessions": "Oturumlar",
|
||||
"DevDetail_Tab_Details": "Detaylar",
|
||||
"DevDetail_Tab_Events": "",
|
||||
"DevDetail_Tab_Events": "Etkinlikler",
|
||||
"DevDetail_Tab_EventsTableDate": "Tarih",
|
||||
"DevDetail_Tab_EventsTableEvent": "",
|
||||
"DevDetail_Tab_EventsTableEvent": "Etkinlik Türü",
|
||||
"DevDetail_Tab_EventsTableIP": "IP",
|
||||
"DevDetail_Tab_EventsTableInfo": "Ek bilgi",
|
||||
"DevDetail_Tab_Nmap": "",
|
||||
"DevDetail_Tab_NmapEmpty": "",
|
||||
"DevDetail_Tab_Nmap": "<i class=\"fa fa-ethernet\"></i> Nmap",
|
||||
"DevDetail_Tab_NmapEmpty": "Bu cihazda Nmap ile herhangi bir port tespit edilmedi.",
|
||||
"DevDetail_Tab_NmapTableExtra": "Ekstra",
|
||||
"DevDetail_Tab_NmapTableHeader": "Planlanmış tarama sonuçları",
|
||||
"DevDetail_Tab_NmapTableIndex": "",
|
||||
"DevDetail_Tab_NmapTablePort": "",
|
||||
"DevDetail_Tab_NmapTableService": "",
|
||||
"DevDetail_Tab_NmapTableState": "",
|
||||
"DevDetail_Tab_NmapTableText": "",
|
||||
"DevDetail_Tab_NmapTableIndex": "İndeks",
|
||||
"DevDetail_Tab_NmapTablePort": "Port",
|
||||
"DevDetail_Tab_NmapTableService": "Servis",
|
||||
"DevDetail_Tab_NmapTableState": "Status",
|
||||
"DevDetail_Tab_NmapTableText": "Bir takvim oluşturun <a href=\"/settings.php#NMAP_ACTIVE\">Ayarlar</a> bölümünde",
|
||||
"DevDetail_Tab_NmapTableTime": "Zaman",
|
||||
"DevDetail_Tab_Plugins": "",
|
||||
"DevDetail_Tab_Presence": "",
|
||||
"DevDetail_Tab_Plugins": "Eklentiler",
|
||||
"DevDetail_Tab_Presence": "Mevcudiyet",
|
||||
"DevDetail_Tab_Sessions": "Oturumlar",
|
||||
"DevDetail_Tab_Tools": "",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Description": "",
|
||||
"DevDetail_Tab_Tools": "Araçlar",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Description": "İnternet Bilgisi aracı, IP adresi, şehir, ülke, alan kodu ve saat dilimi gibi internet bağlantısı hakkında bilgi görüntüler.",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Error": "Bir hata oluştu",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Start": "",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Title": "",
|
||||
"DevDetail_Tab_Tools_Nslookup_Description": "",
|
||||
"DevDetail_Tab_Tools_Nslookup_Error": "Hata: Geçersiz IP adresi.",
|
||||
"DevDetail_Tab_Tools_Nslookup_Start": "",
|
||||
"DevDetail_Tab_Tools_Nslookup_Title": "",
|
||||
"DevDetail_Tab_Tools_Speedtest_Description": "",
|
||||
"DevDetail_Tab_Tools_Speedtest_Start": "",
|
||||
"DevDetail_Tab_Tools_Speedtest_Title": "",
|
||||
"DevDetail_Tab_Tools_Traceroute_Description": "",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Start": "İnternet Bilgisi Başlat",
|
||||
"DevDetail_Tab_Tools_Internet_Info_Title": "İnternet Bilgisi",
|
||||
"DevDetail_Tab_Tools_Nslookup_Description": "Nslookup, Alan Adı Sistemi'ni (DNS) sorgulamak için kullanılan bir komut satırı aracıdır. DNS, www.google.com gibi alan adlarını, 172.217.0.142 gibi IP adreslerine çeviren bir sistemdir.",
|
||||
"DevDetail_Tab_Tools_Nslookup_Error": "Hata: Geçersiz IP adresi",
|
||||
"DevDetail_Tab_Tools_Nslookup_Start": "Nslookup Başlat",
|
||||
"DevDetail_Tab_Tools_Nslookup_Title": "Nslookup",
|
||||
"DevDetail_Tab_Tools_Speedtest_Description": "Speedtest aracı, internet bağlantısının indirme hızı, yükleme hızı ve gecikme süresini ölçer.",
|
||||
"DevDetail_Tab_Tools_Speedtest_Start": "Speedtest Başlat",
|
||||
"DevDetail_Tab_Tools_Speedtest_Title": "Çevrimiçi Speedtest",
|
||||
"DevDetail_Tab_Tools_Traceroute_Description": "Traceroute, veri paketlerinin bir host'tan diğerine gittiği yolu izlemek için kullanılan bir ağ tanılama komutudur.Bu komut, İnternet Kontrol Mesajı Protokolü (ICMP) kullanarak, rotadaki ara düğümlere paketler gönderir; her bir ara düğüm, ICMP zaman aşımı (TTL zaman aşımı) paketleri ile yanıt verir.Traceroute komutunun çıktısı, rotadaki her bir ara düğümün IP adresini görüntüler.Traceroute komutu, ağ sorunlarını teşhis etmek için kullanılabilir, örneğin gecikmeler, paket kaybı ve engellenmiş rotalar gibi.Ayrıca, bir ağdaki ara düğümün konumunu belirlemek için de kullanılabilir.",
|
||||
"DevDetail_Tab_Tools_Traceroute_Error": "Hata: Geçersiz IP adresi",
|
||||
"DevDetail_Tab_Tools_Traceroute_Start": "",
|
||||
"DevDetail_Tab_Tools_Traceroute_Title": "",
|
||||
"DevDetail_Tools_WOL": "",
|
||||
"DevDetail_Tools_WOL_noti": "",
|
||||
"DevDetail_Tools_WOL_noti_text": "",
|
||||
"DevDetail_Type_hover": "",
|
||||
"DevDetail_Vendor_hover": "",
|
||||
"DevDetail_WOL_Title": "",
|
||||
"DevDetail_Tab_Tools_Traceroute_Start": "Traceroute Başlat",
|
||||
"DevDetail_Tab_Tools_Traceroute_Title": "Traceroute",
|
||||
"DevDetail_Tools_WOL": "WoL komutunu gönder ",
|
||||
"DevDetail_Tools_WOL_noti": "Wake-on-LAN",
|
||||
"DevDetail_Tools_WOL_noti_text": "Wake-on-LAN komutu yayın adresine gönderilir. Eğer hedef, NetAlertX'in alt ağında/VLAN'ında değilse, hedef cihaz yanıt vermez.",
|
||||
"DevDetail_Type_hover": "Cihazın Türü. Eğer önceden tanımlanmış ağ cihazlarından herhangiini (örneğin: AP, Firewall, Router, Switch...) seçerseniz, bu cihazlar Ağ ağacı yapılandırmasında olası üst ağ düğümleri olarak görüntülenir.",
|
||||
"DevDetail_Vendor_hover": "Satıcı otomatik olarak tespit edilmelidir. Kendi özel değerini yazabilir veya üzerine yazabilirsiniz.",
|
||||
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
|
||||
"DevDetail_button_AddIcon": "Yeni İkon Ekle",
|
||||
"DevDetail_button_AddIcon_Help": "",
|
||||
"DevDetail_button_AddIcon_Tooltip": "",
|
||||
"DevDetail_button_AddIcon_Help": "Bir SVG HTML etiketi veya Font Awesome HTML etiketi simgesi yapıştırın. Detaylar için <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/ICONS.md\" target=\"_blank\">Simge dökümantasyonunu</a> okuyun.",
|
||||
"DevDetail_button_AddIcon_Tooltip": "Bu cihaza, açılır menüde henüz mevcut olmayan yeni bir simge ekleyin.",
|
||||
"DevDetail_button_Delete": "Cihazı Sil",
|
||||
"DevDetail_button_DeleteEvents": "",
|
||||
"DevDetail_button_DeleteEvents_Warning": "",
|
||||
"DevDetail_button_Delete_ask": "",
|
||||
"DevDetail_button_OverwriteIcons": "",
|
||||
"DevDetail_button_OverwriteIcons_Tooltip": "",
|
||||
"DevDetail_button_OverwriteIcons_Warning": "",
|
||||
"DevDetail_button_DeleteEvents": "Etkinlikleri Sil",
|
||||
"DevDetail_button_DeleteEvents_Warning": "Bu cihazın tüm Etkinliklerini silmek istediğinizden emin misiniz?<br><br>(Bu işlem, <b>Etkinlik geçmişi</b> ve <b>Oturumları</b> temizler, ayrıca sürekli (kalıcı) bildirimlerin giderilmesine yardımcı olabilir.)",
|
||||
"DevDetail_button_Delete_ask": "Bu cihazı silmek istediğinizden emin misiniz? Bunun yerine arşivlemeyi de seçebilirsiniz.",
|
||||
"DevDetail_button_OverwriteIcons": "Simgeleri Üzerine Yaz",
|
||||
"DevDetail_button_OverwriteIcons_Tooltip": "Aynı cihaz türüne sahip tüm cihazların simgelerini üzerine yazın",
|
||||
"DevDetail_button_OverwriteIcons_Warning": "Mevcut cihaz türüyle aynı cihaz türüne sahip tüm cihazların simgelerini üzerine yazmak istediğinizden emin misiniz?",
|
||||
"DevDetail_button_Reset": "Değişiklikleri Sıfırla",
|
||||
"DevDetail_button_Save": "Kaydet",
|
||||
"DeviceEdit_ValidMacIp": "",
|
||||
"Device_MultiEdit": "",
|
||||
"Device_MultiEdit_Backup": "",
|
||||
"Device_MultiEdit_Fields": "",
|
||||
"DeviceEdit_ValidMacIp": "Geçerli bir <b>Mac</b> ve <b>IP</b> adresi girin.",
|
||||
"Device_MultiEdit": "Çoklu Düzenleme",
|
||||
"Device_MultiEdit_Backup": "Dikkat, aşağıya yanlış değerler girmeniz yapılandırmanızı bozabilir. Lütfen önce veritabanınızı veya Cihazlar yapılandırmanızı yedekleyin (<a href=\"php/server/devices.php?action=ExportCSV\">İndirmeniz için tıklayın <i class=\"fa-solid fa-download fa-bounce\"></i></a>). Bu dosyadan Cihazları nasıl geri yükleyeceğinizi öğrenmek için <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\"_blank\">Yedekleme dökümantasyonunu</a> okuyun.",
|
||||
"Device_MultiEdit_Fields": "Alanları Düzenle:",
|
||||
"Device_MultiEdit_MassActions": "Toplu komutlar:",
|
||||
"Device_MultiEdit_Tooltip": "",
|
||||
"Device_Searchbox": "",
|
||||
"Device_MultiEdit_Tooltip": "Dikkat. Buna tıklamak, soldaki değeri yukarıda seçilen tüm cihazlara uygulayacaktır.",
|
||||
"Device_Searchbox": "Arama",
|
||||
"Device_Shortcut_AllDevices": "Cihazlarım",
|
||||
"Device_Shortcut_Archived": "",
|
||||
"Device_Shortcut_Archived": "Arşivlenmiş",
|
||||
"Device_Shortcut_Connected": "Bağlandı",
|
||||
"Device_Shortcut_Devices": "Cihazlar",
|
||||
"Device_Shortcut_DownAlerts": "",
|
||||
"Device_Shortcut_DownOnly": "",
|
||||
"Device_Shortcut_DownAlerts": "Çalışmıyor & Çevrimdışı",
|
||||
"Device_Shortcut_DownOnly": "Çalışmıyor",
|
||||
"Device_Shortcut_Favorites": "Favoriler",
|
||||
"Device_Shortcut_NewDevices": "Yeni Cİhazlar",
|
||||
"Device_Shortcut_OnlineChart": "",
|
||||
"Device_TableHead_AlertDown": "",
|
||||
"Device_Shortcut_OnlineChart": "Cihaz Durumu",
|
||||
"Device_TableHead_AlertDown": "Çalışmama Alarmı",
|
||||
"Device_TableHead_Connected_Devices": "Bağlantılar",
|
||||
"Device_TableHead_CustomProps": "",
|
||||
"Device_TableHead_Favorite": "",
|
||||
"Device_TableHead_CustomProps": "Özellikler / Eylemler",
|
||||
"Device_TableHead_Favorite": "Favori",
|
||||
"Device_TableHead_FirstSession": "İlk Oturum",
|
||||
"Device_TableHead_GUID": "",
|
||||
"Device_TableHead_GUID": "GUID",
|
||||
"Device_TableHead_Group": "Grup",
|
||||
"Device_TableHead_Icon": "",
|
||||
"Device_TableHead_LastIP": "",
|
||||
"Device_TableHead_LastIPOrder": "",
|
||||
"Device_TableHead_LastSession": "",
|
||||
"Device_TableHead_Icon": "İkon",
|
||||
"Device_TableHead_LastIP": "Son IP",
|
||||
"Device_TableHead_LastIPOrder": "Son IP Sırası",
|
||||
"Device_TableHead_LastSession": "Son Çevrimdışı Zamanı",
|
||||
"Device_TableHead_Location": "Konum",
|
||||
"Device_TableHead_MAC": "",
|
||||
"Device_TableHead_MAC_full": "",
|
||||
"Device_TableHead_MAC": "Rastgele MAC",
|
||||
"Device_TableHead_MAC_full": "Tam MAC",
|
||||
"Device_TableHead_Name": "İsim",
|
||||
"Device_TableHead_NetworkSite": "",
|
||||
"Device_TableHead_Owner": "",
|
||||
"Device_TableHead_Parent_MAC": "",
|
||||
"Device_TableHead_Port": "",
|
||||
"Device_TableHead_PresentLastScan": "",
|
||||
"Device_TableHead_RowID": "",
|
||||
"Device_TableHead_Rowid": "",
|
||||
"Device_TableHead_SSID": "",
|
||||
"Device_TableHead_SourcePlugin": "",
|
||||
"Device_TableHead_NetworkSite": "Ağ Alanı",
|
||||
"Device_TableHead_Owner": "Kurucu",
|
||||
"Device_TableHead_Parent_MAC": "Üst ağ düğümü",
|
||||
"Device_TableHead_Port": "Port",
|
||||
"Device_TableHead_PresentLastScan": "Varlık",
|
||||
"Device_TableHead_RowID": "Satır ID",
|
||||
"Device_TableHead_Rowid": "Satır ID",
|
||||
"Device_TableHead_SSID": "SSID",
|
||||
"Device_TableHead_SourcePlugin": "Kaynak Eklentisi Modülü",
|
||||
"Device_TableHead_Status": "Durum",
|
||||
"Device_TableHead_SyncHubNodeName": "",
|
||||
"Device_TableHead_Type": "",
|
||||
"Device_TableHead_Vendor": "",
|
||||
"Device_TableHead_SyncHubNodeName": "Senkronizasyon Node",
|
||||
"Device_TableHead_Type": "Tür",
|
||||
"Device_TableHead_Vendor": "Üretici",
|
||||
"Device_Table_Not_Network_Device": "Ağ cihazı olarak ayarlanmadı",
|
||||
"Device_Table_info": "",
|
||||
"Device_Table_info": "Showing _START_ to _END_ of _TOTAL_ entries",
|
||||
"Device_Table_nav_next": "Sonraki",
|
||||
"Device_Table_nav_prev": "Önceki",
|
||||
"Device_Tablelenght": "",
|
||||
"Device_Tablelenght_all": "",
|
||||
"Device_Tablelenght": "Show _MENU_ entries",
|
||||
"Device_Tablelenght_all": "Hepsi",
|
||||
"Device_Title": "Cihazlar",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "Diğerleri",
|
||||
"Donations_Platforms": "",
|
||||
"Donations_Text": "",
|
||||
"Donations_Title": "",
|
||||
"ENABLE_PLUGINS_description": "",
|
||||
"ENABLE_PLUGINS_name": "",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
"ENCRYPTION_KEY_name": "",
|
||||
"Devices_Filters": "Filtreler",
|
||||
"ENABLE_PLUGINS_description": "<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">Eklentiler</a> işlevini etkinleştirir. Eklentilerin yüklenmesi daha fazla donanım kaynağı gerektirir, bu nedenle düşük güçteki sistemlerde devre dışı bırakmak isteyebilirsiniz.",
|
||||
"ENABLE_PLUGINS_name": "Eklentileri Etkinleştir",
|
||||
"ENCRYPTION_KEY_description": "Veri encryption şifresi.",
|
||||
"ENCRYPTION_KEY_name": "Encryption şifresi",
|
||||
"Email_display_name": "Eposta",
|
||||
"Email_icon": "<i class=\"fa fa-at\"></i>",
|
||||
"Events_Loading": "Yükleniyor...",
|
||||
"Events_Periodselect_All": "",
|
||||
"Events_Periodselect_All": "Tüm Bilgiler",
|
||||
"Events_Periodselect_LastMonth": "Geçen Ay",
|
||||
"Events_Periodselect_LastWeek": "Geçen Hafta",
|
||||
"Events_Periodselect_LastYear": "Geçen Yıl",
|
||||
"Events_Periodselect_today": "Bugün",
|
||||
"Events_Searchbox": "",
|
||||
"Events_Shortcut_AllEvents": "",
|
||||
"Events_Shortcut_DownAlerts": "",
|
||||
"Events_Shortcut_Events": "",
|
||||
"Events_Shortcut_MissSessions": "",
|
||||
"Events_Searchbox": "Arama",
|
||||
"Events_Shortcut_AllEvents": "Tüm Olaylar",
|
||||
"Events_Shortcut_DownAlerts": "Kapanma Alarmı",
|
||||
"Events_Shortcut_Events": "Olaylar",
|
||||
"Events_Shortcut_MissSessions": "Eksik Oturumlar",
|
||||
"Events_Shortcut_NewDevices": "Yeni Cİhazlar",
|
||||
"Events_Shortcut_Sessions": "Oturumlar",
|
||||
"Events_Shortcut_VoidSessions": "",
|
||||
"Events_Shortcut_VoidSessions": "Geçersiz Oturumlar",
|
||||
"Events_TableHead_AdditionalInfo": "Ek Bilgi",
|
||||
"Events_TableHead_Connection": "Bağlantı",
|
||||
"Events_TableHead_Date": "Tarih",
|
||||
"Events_TableHead_Device": "Cihaz",
|
||||
"Events_TableHead_Disconnection": "",
|
||||
"Events_TableHead_Disconnection": "Bağlantı Kesildi",
|
||||
"Events_TableHead_Duration": "Süre",
|
||||
"Events_TableHead_DurationOrder": "",
|
||||
"Events_TableHead_EventType": "",
|
||||
"Events_TableHead_IP": "",
|
||||
"Events_TableHead_IPOrder": "",
|
||||
"Events_TableHead_DurationOrder": "Süre Düzeni",
|
||||
"Events_TableHead_EventType": "Olay Türü",
|
||||
"Events_TableHead_IP": "IP",
|
||||
"Events_TableHead_IPOrder": "IP Sırası",
|
||||
"Events_TableHead_Order": "Sıra",
|
||||
"Events_TableHead_Owner": "",
|
||||
"Events_TableHead_PendingAlert": "",
|
||||
"Events_Table_info": "",
|
||||
"Events_Table_nav_next": "",
|
||||
"Events_TableHead_Owner": "Kurucu",
|
||||
"Events_TableHead_PendingAlert": "Bekleyen Alarm",
|
||||
"Events_Table_info": "Showing _START_ to _END_ of _TOTAL_ entries",
|
||||
"Events_Table_nav_next": "Sonraki",
|
||||
"Events_Table_nav_prev": "Önceki",
|
||||
"Events_Tablelenght": "",
|
||||
"Events_Tablelenght_all": "",
|
||||
"Events_Title": "",
|
||||
"GRAPHQL_PORT_description": "",
|
||||
"GRAPHQL_PORT_name": "",
|
||||
"Events_Tablelenght": "Show _MENU_ entries",
|
||||
"Events_Tablelenght_all": "Hepsi",
|
||||
"Events_Title": "Olaylar",
|
||||
"GRAPHQL_PORT_description": "GraphQL sunucusunun port numarası. Portun, bu anahtardaki tüm uygulamalar ve NetAlertX örnekleri arasında benzersiz olduğundan emin olun.",
|
||||
"GRAPHQL_PORT_name": "GraphQL port",
|
||||
"Gen_Action": "Komut",
|
||||
"Gen_Add": "Ekle",
|
||||
"Gen_AddDevice": "",
|
||||
"Gen_AddDevice": "Cihaz Ekle",
|
||||
"Gen_Add_All": "Tümünü ekle",
|
||||
"Gen_All_Devices": "Tüm Cihazlar",
|
||||
"Gen_AreYouSure": "Emin misiniz?",
|
||||
"Gen_Backup": "",
|
||||
"Gen_Backup": "Yedeklemeyi Çalıştır",
|
||||
"Gen_Cancel": "İptal",
|
||||
"Gen_Change": "",
|
||||
"Gen_Change": "Değiştir",
|
||||
"Gen_Copy": "Çalıştır",
|
||||
"Gen_DataUpdatedUITakesTime": "TAMAM - Eğer bir tarama çalışıyorsa arayüzün güncellenmesi biraz zaman alabilir",
|
||||
"Gen_DataUpdatedUITakesTime": "TAMAM - Eğer bir tarama çalışıyorsa arayüzün güncellenmesi biraz zaman alabilir.",
|
||||
"Gen_Delete": "Sil",
|
||||
"Gen_DeleteAll": "Tümünü sil",
|
||||
"Gen_Description": "",
|
||||
"Gen_Description": "Açıklama",
|
||||
"Gen_Error": "Hata",
|
||||
"Gen_Filter": "Filtre",
|
||||
"Gen_Generate": "",
|
||||
"Gen_LockedDB": "",
|
||||
"Gen_Generate": "Oluştur",
|
||||
"Gen_LockedDB": "HATA - Veritabanı kilitlenmiş olabilir - F12 Geliştirici araçlarını -> Konsol kısmını kontrol edin veya daha sonra tekrar deneyin.",
|
||||
"Gen_Offline": "Çevrimdışı",
|
||||
"Gen_Okay": "Tamam",
|
||||
"Gen_Online": "",
|
||||
"Gen_Online": "Çevrimiçi",
|
||||
"Gen_Purge": "Çıkar",
|
||||
"Gen_ReadDocs": "",
|
||||
"Gen_ReadDocs": "Dokümanlarda daha fazla bilgiye ulaşın.",
|
||||
"Gen_Remove_All": "Tümünü kaldır",
|
||||
"Gen_Remove_Last": "",
|
||||
"Gen_Reset": "",
|
||||
"Gen_Restore": "",
|
||||
"Gen_Remove_Last": "Sonuncuyu Kaldır",
|
||||
"Gen_Reset": "Sıfırla",
|
||||
"Gen_Restore": "Geri Yükleme Yap",
|
||||
"Gen_Run": "Çalıştır",
|
||||
"Gen_Save": "Kaydet",
|
||||
"Gen_Saved": "Kaydedildi",
|
||||
"Gen_Search": "",
|
||||
"Gen_Select": "",
|
||||
"Gen_SelectIcon": "",
|
||||
"Gen_SelectToPreview": "",
|
||||
"Gen_Search": "Arama",
|
||||
"Gen_Select": "Seç",
|
||||
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
|
||||
"Gen_SelectToPreview": "Önizleme yapmak için seçin",
|
||||
"Gen_Selected_Devices": "Seçilmiş Cihazlar:",
|
||||
"Gen_Switch": "",
|
||||
"Gen_Switch": "Switch",
|
||||
"Gen_Upd": "Başarılı bir şekilde güncellendi",
|
||||
"Gen_Upd_Fail": "",
|
||||
"Gen_Update": "",
|
||||
"Gen_Update_Value": "",
|
||||
"Gen_ValidIcon": "",
|
||||
"Gen_Upd_Fail": "Güncelleme işlemi başarısız oldu",
|
||||
"Gen_Update": "Güncelleme",
|
||||
"Gen_Update_Value": "Değeri Güncelle",
|
||||
"Gen_ValidIcon": "<i class=\"fa-solid fa-chevron-right \"></i>",
|
||||
"Gen_Warning": "Uyarı",
|
||||
"Gen_Work_In_Progress": "",
|
||||
"Gen_create_new_device": "",
|
||||
"Gen_create_new_device_info": "",
|
||||
"Gen_Work_In_Progress": "Çalışma devam ediyor, geri bildirimde bulunmak için iyi bir zaman: https://github.com/jokob-sk/NetAlertX/issues",
|
||||
"Gen_create_new_device": "Yeni cihaz",
|
||||
"Gen_create_new_device_info": "Cihazlar genellikle <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">eklentiler</a> kullanılarak keşfedilir. Ancak, bazı durumlarda cihazları manuel olarak eklemeniz gerekebilir. Belirli senaryoları incelemek için <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">Uzak Ağlar belgelerini</a> kontrol edin.",
|
||||
"General_display_name": "Genel",
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "",
|
||||
"LOADED_PLUGINS_description": "",
|
||||
"LOADED_PLUGINS_name": "",
|
||||
"LOG_LEVEL_description": "",
|
||||
"LOG_LEVEL_name": "",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Bu bir bakım ayarıdır <b>Cihazları SİLME</b>. Etkinleştirildiğinde (<code>0</code> devre dışıdır), <b>Yeni Cihaz</b> olarak işaretlenen cihazlar, <b>İlk Oturum</b> zamanı belirtilen saatten daha eskiyse silinecektir. Bu ayarı, <code>X</code> saat sonra <b>Yeni Cihazlar</b>ı otomatik olarak silmek için kullanabilirsiniz.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Yeni Cihazları Silmeden Önce",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Bu bir bakım ayarıdır <b>Cihazları SİLME</b>. Etkinleştirildiğinde (<code>0</code> devre dışıdır), <b>Çevrimdışı</b> olan ve <b>Son Çevrimdışı</b> tarihi belirtilen saatten daha eski olan cihazlar silinecektir. Bu ayarı, <code>X</code> saat çevrimdışı olduktan sonra <b>Çevrimdışı Cihazlar</b>ı otomatik olarak silmek için kullanabilirsiniz.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Çevrimdışı Cihazları Silmeden Önce",
|
||||
"LOADED_PLUGINS_description": "Hangi Eklentilerin Yükleneceği. Eklenti eklemek, uygulamanın hızını yavaşlatabilir. Hangi eklentilerin etkinleştirilmesi gerektiği, türler veya tarama seçenekleri hakkında daha fazla bilgi için <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">eklentiler belgelerini</a> okuyun. Yüklenmeyen eklentiler, ayarlarınızı kaybedecektir. Sadece <code>devre dışı bırakılmış</code> eklentiler yüklenebilir.",
|
||||
"LOADED_PLUGINS_name": "Yüklenen Eklentiler",
|
||||
"LOG_LEVEL_description": "Bu ayar, daha ayrıntılı günlüklemeyi etkinleştirecektir. Veritabanına yazılan olayları hata ayıklamak için faydalıdır.",
|
||||
"LOG_LEVEL_name": "Ekstra günlükleme yazdır",
|
||||
"Loading": "Yükleniyor...",
|
||||
"Login_Box": "Şifrenizi giriniz",
|
||||
"Login_Default_PWD": "Varsayılan şifre \"123456\" hâlâ aktif.",
|
||||
"Login_Info": "",
|
||||
"Login_Info": "Parolalar, Set Password eklentisi aracılığıyla ayarlanır. Giriş yapmakta sorun yaşıyorsanız, <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password\">SETPWD belgelerini</a> kontrol edin.",
|
||||
"Login_Psw-box": "Şİfre",
|
||||
"Login_Psw_alert": "",
|
||||
"Login_Psw_folder": "",
|
||||
"Login_Psw_alert": "Parola Uyarısı!",
|
||||
"Login_Psw_folder": "Konfigürasyon klasöründe.",
|
||||
"Login_Psw_new": "yeni_sifre",
|
||||
"Login_Psw_run": "",
|
||||
"Login_Psw_run": "Şifreyi değiştirmek için şu komutu çalıştırın:",
|
||||
"Login_Remember": "Hatırla",
|
||||
"Login_Remember_small": "(7 gün geçerli)",
|
||||
"Login_Submit": "Oturum aç",
|
||||
"Login_Toggle_Alert_headline": "",
|
||||
"Login_Toggle_Info": "",
|
||||
"Login_Toggle_Info_headline": "",
|
||||
"Maint_PurgeLog": "",
|
||||
"Maint_RestartServer": "",
|
||||
"Maint_Restart_Server_noti_text": "",
|
||||
"Login_Toggle_Alert_headline": "Şifre Uyarısı!",
|
||||
"Login_Toggle_Info": "Şifre Bilgisi",
|
||||
"Login_Toggle_Info_headline": "Şifre Bilgisi",
|
||||
"Maint_PurgeLog": "Kayıtları Sil",
|
||||
"Maint_RestartServer": "Sunucuyu Yeniden Başlat",
|
||||
"Maint_Restart_Server_noti_text": "Arka uç sunucusunu yeniden başlatmak istediğinizden emin misiniz? Bu, uygulama tutarsızlıklarına yol açabilir. Önce yapılandırmanızı yedekleyin. <br/> <br/> Not: Bu işlem birkaç dakika sürebilir.",
|
||||
"Maintenance_Running_Version": "Yüklenmiş sürüm",
|
||||
"Maintenance_Status": "Durum",
|
||||
"Maintenance_Title": "",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "",
|
||||
"Maintenance_Tool_ExportCSV_noti": "",
|
||||
"Maintenance_Title": "Bakım Araçları",
|
||||
"Maintenance_Tool_DownloadConfig": "Ayarları Dışa Aktar",
|
||||
"Maintenance_Tool_DownloadConfig_text": "<code>app.conf</code> dosyasında saklanan Ayar yapılandırmanızın tam yedeğini indirin.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "İş Akışlarını Dışa Aktar",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "<code>workflows.json</code> dosyasında saklanan İş Akışlarınızın tam yedeğini indirin.",
|
||||
"Maintenance_Tool_ExportCSV": "Cihazları Dışa Aktar (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Cihazları Dışa Aktar (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Bir CSV dosyası oluşturmak istediğinize emin misiniz?",
|
||||
"Maintenance_Tool_ExportCSV_text": "",
|
||||
"Maintenance_Tool_ImportCSV": "",
|
||||
"Maintenance_Tool_ImportCSV_noti": "",
|
||||
"Maintenance_Tool_ImportCSV_noti_text": "",
|
||||
"Maintenance_Tool_ImportCSV_text": "",
|
||||
"Maintenance_Tool_ImportConfig_noti": "",
|
||||
"Maintenance_Tool_ImportPastedCSV": "",
|
||||
"Maintenance_Tool_ImportPastedCSV_noti_text": "",
|
||||
"Maintenance_Tool_ImportPastedCSV_text": "",
|
||||
"Maintenance_Tool_ImportPastedConfig": "",
|
||||
"Maintenance_Tool_ImportPastedConfig_noti_text": "",
|
||||
"Maintenance_Tool_ImportPastedConfig_text": "",
|
||||
"Maintenance_Tool_arpscansw": "",
|
||||
"Maintenance_Tool_arpscansw_noti": "",
|
||||
"Maintenance_Tool_arpscansw_noti_text": "",
|
||||
"Maintenance_Tool_arpscansw_text": "",
|
||||
"Maintenance_Tool_backup": "",
|
||||
"Maintenance_Tool_backup_noti": "",
|
||||
"Maintenance_Tool_backup_noti_text": "",
|
||||
"Maintenance_Tool_backup_text": "",
|
||||
"Maintenance_Tool_check_visible": "",
|
||||
"Maintenance_Tool_darkmode": "",
|
||||
"Maintenance_Tool_darkmode_noti": "",
|
||||
"Maintenance_Tool_darkmode_noti_text": "",
|
||||
"Maintenance_Tool_darkmode_text": "",
|
||||
"Maintenance_Tool_del_ActHistory": "",
|
||||
"Maintenance_Tool_del_ActHistory_noti": "",
|
||||
"Maintenance_Tool_del_ActHistory_noti_text": "",
|
||||
"Maintenance_Tool_del_ActHistory_text": "",
|
||||
"Maintenance_Tool_ExportCSV_text": "Ağa bağlı cihazlar ve Ağ Düğümleri arasındaki ağ ilişkilerini içeren Cihazlar listesini içeren bir CSV (virgülle ayrılmış değerler) dosyası oluşturun. Bunu ayrıca şu URL'yi ziyaret ederek tetikleyebilirsiniz: <code>your_NetAlertX_url/php/server/devices.php?action=ExportCSV</code> veya <a href=\"settings.php#CSVBCKP_header\">CSV Yedekleme</a> eklentisini etkinleştirerek de yapabilirsiniz.",
|
||||
"Maintenance_Tool_ImportCSV": "Cihazları İçe Aktar (csv)",
|
||||
"Maintenance_Tool_ImportCSV_noti": "Cihazları İçe Aktar (csv)",
|
||||
"Maintenance_Tool_ImportCSV_noti_text": "CSV dosyasını içe aktarmak istediğinizden emin misiniz? Bu işlem, veritabanınızdaki cihazları tamamen <b>üstünede yazar</b> olacaktır.",
|
||||
"Maintenance_Tool_ImportCSV_text": "Bu fonksiyonu kullanmadan önce lütfen bir yedek alın. Ağa bağlı cihazlar ve Ağ Düğümleri arasındaki ağ ilişkilerini içeren Cihazlar listesini içeren bir CSV (virgülle ayrılmış değerler) dosyasını içe aktarın. Bunu yapmak için <b>devices.csv</b> adıyla CSV dosyasını <b>/config</b> klasörüne yerleştirin.",
|
||||
"Maintenance_Tool_ImportConfig_noti": "Ayarları İçe Aktar (app.conf)",
|
||||
"Maintenance_Tool_ImportPastedCSV": "Cihazları İçe Aktar (csv) (Yapıştırarak)",
|
||||
"Maintenance_Tool_ImportPastedCSV_noti_text": "Yapıştırılan CSV'yi içe aktarmak istediğinizden emin misiniz? Bu işlem, veritabanınızdaki cihazları tamamen <b>üstünede yazar</b> olacaktır.",
|
||||
"Maintenance_Tool_ImportPastedCSV_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Ağ Düğümleri ve bağlı cihazlar arasındaki Ağ ilişkileri de dahil olmak üzere Cihazların listesini içeren bir CSV (virgülle ayrılmış değer) dosyasını içe aktarın.",
|
||||
"Maintenance_Tool_ImportPastedConfig": "Ayarları İçe Aktar (yapıştır)",
|
||||
"Maintenance_Tool_ImportPastedConfig_noti_text": "Yapıştırılan yapılandırma ayarlarını içe aktarmak istediğinizden emin misiniz? Bu tamamen olacak <b>Üzerine</b> bu <code>app.conf</code> dosya.",
|
||||
"Maintenance_Tool_ImportPastedConfig_text": "İçe aktarır <code>app.conf</code> tüm uygulama Ayarlarını içeren dosya. Güncel olanı indirmek isteyebilirsiniz. <code>app.conf</code> Önce dosya ile <b>Ayarlar Dışa Aktarma</b>.",
|
||||
"Maintenance_Tool_arpscansw": "arp-Scan arasında geçiş yapın (açık/kapalı)",
|
||||
"Maintenance_Tool_arpscansw_noti": "arp-Scan'i açma veya kapatma",
|
||||
"Maintenance_Tool_arpscansw_noti_text": "Tarama kapatıldığında, tekrar etkinleştirilene kadar kapalı kalır.",
|
||||
"Maintenance_Tool_arpscansw_text": "Arp taramasını açma veya kapatma. Tarama kapatıldığında, tekrar etkinleştirilene kadar kapalı kalır. Etkin taramalar iptal edilmez.",
|
||||
"Maintenance_Tool_backup": "Veritabanı Yedekleme",
|
||||
"Maintenance_Tool_backup_noti": "Veritabanı Yedekleme",
|
||||
"Maintenance_Tool_backup_noti_text": "DB Yedeklemesini yürütmek istediğinizden emin misiniz? Şu anda hiçbir taramanın çalışmadığından emin olun.",
|
||||
"Maintenance_Tool_backup_text": "Veritabanı yedekleri, veritabanı dizininde, oluşturulma tarihiyle adlandırılan bir zip arşivi olarak bulunur. Maksimum yedekleme sayısı yoktur.",
|
||||
"Maintenance_Tool_check_visible": "Sütunu gizlemek için işareti kaldırın.",
|
||||
"Maintenance_Tool_darkmode": "Modları Değiştir (Koyu/Açık)",
|
||||
"Maintenance_Tool_darkmode_noti": "Modları Aç/Kapat",
|
||||
"Maintenance_Tool_darkmode_noti_text": "Tema geçişinden sonra sayfa, değişikliği etkinleştirmek için kendini yeniden yüklemeye çalışır. Gerekirse, önbellek temizlenmelidir.",
|
||||
"Maintenance_Tool_darkmode_text": "Karanlık mod ve aydınlık mod arasında geçiş yapın. Anahtar düzgün çalışmıyorsa, tarayıcı önbelleğini temizlemeyi deneyin. Değişiklik sunucu tarafında gerçekleşir, bu nedenle kullanımdaki tüm cihazları etkiler.",
|
||||
"Maintenance_Tool_del_ActHistory": "Ağ etkinliğini silme",
|
||||
"Maintenance_Tool_del_ActHistory_noti": "Ağ etkinliğini sil",
|
||||
"Maintenance_Tool_del_ActHistory_noti_text": "Ağ etkinliğini sıfırlamak istediğinizden emin misiniz?",
|
||||
"Maintenance_Tool_del_ActHistory_text": "Ağ etkinliği grafiği sıfırlanır. Bu olayları etkilemez.",
|
||||
"Maintenance_Tool_del_alldev": "Tüm Cihazları Sil",
|
||||
"Maintenance_Tool_del_alldev_noti": "",
|
||||
"Maintenance_Tool_del_alldev_noti": "Silinmiş Cihazlar",
|
||||
"Maintenance_Tool_del_alldev_noti_text": "Tüm cihazları silmek istediğinize emin misiniz?",
|
||||
"Maintenance_Tool_del_alldev_text": "",
|
||||
"Maintenance_Tool_del_allevents": "",
|
||||
"Maintenance_Tool_del_allevents30": "",
|
||||
"Maintenance_Tool_del_allevents30_noti": "",
|
||||
"Maintenance_Tool_del_allevents30_noti_text": "",
|
||||
"Maintenance_Tool_del_allevents30_text": "",
|
||||
"Maintenance_Tool_del_allevents_noti": "",
|
||||
"Maintenance_Tool_del_allevents_noti_text": "",
|
||||
"Maintenance_Tool_del_allevents_text": "",
|
||||
"Maintenance_Tool_del_empty_macs": "",
|
||||
"Maintenance_Tool_del_alldev_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Silme işlemi geri alınamaz. Tüm cihazlar veritabanından silinecektir.",
|
||||
"Maintenance_Tool_del_allevents": "Olayları Sil (Varlığı Sıfırla)",
|
||||
"Maintenance_Tool_del_allevents30": "30 günden eski tüm Etkinlikleri sil",
|
||||
"Maintenance_Tool_del_allevents30_noti": "Etkinlikleri Sil",
|
||||
"Maintenance_Tool_del_allevents30_noti_text": "30 günden eski tüm Etkinlikleri silmek istediğinizden emin misiniz? Bu, tüm Cihazların Varlığını sıfırlar.",
|
||||
"Maintenance_Tool_del_allevents30_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Silme işlemi geri alınamaz. Veritabanında 30 günden daha eski olan tüm olaylar silinecektir. O anda tüm cihazların varlığı sıfırlanacaktır. Bu, geçersiz oturumlara yol açabilir. Bu, cihazların çevrimdışı olmalarına rağmen \"mevcut\" olarak görüntülendiği anlamına gelir. Söz konusu cihaz çevrimiçiyken yapılan bir tarama sorunu çözer.",
|
||||
"Maintenance_Tool_del_allevents_noti": "Etkinlikleri Sil",
|
||||
"Maintenance_Tool_del_allevents_noti_text": "Tüm Etkinlikleri silmek istediğinizden emin misiniz? Bu, tüm Cihazların Varlığını sıfırlar.",
|
||||
"Maintenance_Tool_del_allevents_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Silme işlemi geri alınamaz. Veritabanındaki tüm olaylar silinecektir. O anda tüm cihazların varlığı sıfırlanacaktır. Bu, geçersiz oturumlara yol açabilir. Bu, cihazların çevrimdışı olmalarına rağmen \"mevcut\" olarak görüntülendiği anlamına gelir. Söz konusu cihaz çevrimiçiyken yapılan bir tarama sorunu çözer.",
|
||||
"Maintenance_Tool_del_empty_macs": "Boş MAC'leri olan Aygıtları Silin",
|
||||
"Maintenance_Tool_del_empty_macs_noti": "Cihazları Sil",
|
||||
"Maintenance_Tool_del_empty_macs_noti_text": "",
|
||||
"Maintenance_Tool_del_empty_macs_text": "",
|
||||
"Maintenance_Tool_del_empty_macs_noti_text": "MAC adresleri boş olan tüm cihazları silmek istediğinizden emin misiniz?<br>(belki arşivlemeyi tercih edersiniz)",
|
||||
"Maintenance_Tool_del_empty_macs_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Silme işlemi geri alınamaz. MAC olmayan tüm cihazlar veritabanından silinecektir.",
|
||||
"Maintenance_Tool_del_selecteddev": "Seçilmiş cihazları sil",
|
||||
"Maintenance_Tool_del_selecteddev_text": "",
|
||||
"Maintenance_Tool_del_selecteddev_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Silme işlemi geri alınamaz. Seçilen cihazlar veritabanından silinecektir.",
|
||||
"Maintenance_Tool_del_unknowndev": "(bilinmeyen) Cihazları Sil",
|
||||
"Maintenance_Tool_del_unknowndev_noti": "",
|
||||
"Maintenance_Tool_del_unknowndev_noti_text": "",
|
||||
"Maintenance_Tool_del_unknowndev_text": "",
|
||||
"Maintenance_Tool_displayed_columns_text": "",
|
||||
"Maintenance_Tool_drag_me": "",
|
||||
"Maintenance_Tool_order_columns_text": "",
|
||||
"Maintenance_Tool_purgebackup": "",
|
||||
"Maintenance_Tool_purgebackup_noti": "",
|
||||
"Maintenance_Tool_purgebackup_noti_text": "",
|
||||
"Maintenance_Tool_purgebackup_text": "",
|
||||
"Maintenance_Tool_restore": "",
|
||||
"Maintenance_Tool_restore_noti": "",
|
||||
"Maintenance_Tool_restore_noti_text": "",
|
||||
"Maintenance_Tool_restore_text": "",
|
||||
"Maintenance_Tool_upgrade_database_noti": "",
|
||||
"Maintenance_Tool_upgrade_database_noti_text": "",
|
||||
"Maintenance_Tool_upgrade_database_text": "",
|
||||
"Maintenance_Tools_Tab_BackupRestore": "",
|
||||
"Maintenance_Tools_Tab_Logging": "",
|
||||
"Maintenance_Tool_del_unknowndev_noti": "(Bilinmeyen) Cihazları Sil",
|
||||
"Maintenance_Tool_del_unknowndev_noti_text": "Tüm (bilinmeyen) ve (ad bulunamadı) cihazları silmek istediğinizden emin misiniz?",
|
||||
"Maintenance_Tool_del_unknowndev_text": "Bu işlevi kullanmadan önce lütfen bir yedekleme yapın. Silme işlemi geri alınamaz. (Bilinmeyen) adlı tüm cihazlar veritabanından silinecektir.",
|
||||
"Maintenance_Tool_displayed_columns_text": "Sütunların görünürlüğünü ve sırasını değiştirme <a href=\"devices.php\"><b> <i class=\"fa-laptop\"></i> Aygıtları</b></a> sayfa.",
|
||||
"Maintenance_Tool_drag_me": "Sütunları yeniden sıralamak için beni sürükleyin.",
|
||||
"Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text",
|
||||
"Maintenance_Tool_purgebackup": "Yedeklemeleri Temizle",
|
||||
"Maintenance_Tool_purgebackup_noti": "Yedeklemeleri Temizle",
|
||||
"Maintenance_Tool_purgebackup_noti_text": "Son 3 dışındaki tüm yedeklemeleri silmek istediğinizden emin misiniz?",
|
||||
"Maintenance_Tool_purgebackup_text": "Son 3 yedekleme dışında diğer tüm yedeklemeler silinecektir.",
|
||||
"Maintenance_Tool_restore": "Veritabanı Geri Yükleme",
|
||||
"Maintenance_Tool_restore_noti": "Veritabanı Geri Yükleme",
|
||||
"Maintenance_Tool_restore_noti_text": "Veritabanı Geri Yükleme'yi yürütmek istediğinizden emin misiniz? Şu anda hiçbir taramanın çalışmadığından emin olun.",
|
||||
"Maintenance_Tool_restore_text": "En son yedekleme düğme aracılığıyla geri yüklenebilir, ancak eski yedeklemeler yalnızca manuel olarak geri yüklenebilir. Geri yüklemeden sonra, yedekleme oluşturulduğunda veritabanı'nın şu anda yazma erişiminde olması durumunda, güvenlik için veritabanında bir bütünlük kontrolü yapın.",
|
||||
"Maintenance_Tool_upgrade_database_noti": "Veritabanını yükseltme",
|
||||
"Maintenance_Tool_upgrade_database_noti_text": "Veritabanını yükseltmek istediğinizden emin misiniz?<br>(belki arşivlemeyi tercih edersiniz)",
|
||||
"Maintenance_Tool_upgrade_database_text": "Bu düğme, son 12 saatteki Ağ etkinliği grafiğini etkinleştirmek için veritabanını yükseltir. Sorun olması durumunda lütfen veritabanınızı yedekleyin.",
|
||||
"Maintenance_Tools_Tab_BackupRestore": "Yedekleme / Geri Yükleme",
|
||||
"Maintenance_Tools_Tab_Logging": "Günlük",
|
||||
"Maintenance_Tools_Tab_Settings": "Ayarlar",
|
||||
"Maintenance_Tools_Tab_Tools": "Araçlar",
|
||||
"Maintenance_Tools_Tab_UISettings": "Arayüz Ayarları",
|
||||
@@ -445,73 +443,73 @@
|
||||
"Maintenance_arp_status_on": "tarama(lar) şu anda çalışıyor",
|
||||
"Maintenance_built_on": "",
|
||||
"Maintenance_current_version": "",
|
||||
"Maintenance_database_backup": "",
|
||||
"Maintenance_database_backup": "Veritabanı Yedeklemeleri",
|
||||
"Maintenance_database_backup_found": "yedekler bulundu",
|
||||
"Maintenance_database_backup_total": "",
|
||||
"Maintenance_database_lastmod": "",
|
||||
"Maintenance_database_path": "",
|
||||
"Maintenance_database_rows": "",
|
||||
"Maintenance_database_size": "",
|
||||
"Maintenance_database_backup_total": "Toplam disk kullanımı",
|
||||
"Maintenance_database_lastmod": "Son Değişiklik",
|
||||
"Maintenance_database_path": "Veritabanı Yolu",
|
||||
"Maintenance_database_rows": "Tablo (Satırlar)",
|
||||
"Maintenance_database_size": "Veritabanı Boyutu",
|
||||
"Maintenance_lang_selector_apply": "Uygula",
|
||||
"Maintenance_lang_selector_empty": "",
|
||||
"Maintenance_lang_selector_lable": "",
|
||||
"Maintenance_lang_selector_text": "",
|
||||
"Maintenance_lang_selector_empty": "Dil Seçin",
|
||||
"Maintenance_lang_selector_lable": "Dil seçin",
|
||||
"Maintenance_lang_selector_text": "Değişiklik istemci tarafında gerçekleşir, bu nedenle yalnızca mevcut tarayıcıyı etkiler.",
|
||||
"Maintenance_new_version": "",
|
||||
"Maintenance_themeselector_apply": "Uygula",
|
||||
"Maintenance_themeselector_empty": "",
|
||||
"Maintenance_themeselector_lable": "",
|
||||
"Maintenance_themeselector_text": "",
|
||||
"Maintenance_version": "",
|
||||
"NETWORK_DEVICE_TYPES_description": "",
|
||||
"NETWORK_DEVICE_TYPES_name": "",
|
||||
"Maintenance_themeselector_empty": "Bir Dış Görünüm Seçin",
|
||||
"Maintenance_themeselector_lable": "Dış Görünüm Seç",
|
||||
"Maintenance_themeselector_text": "Değişiklik sunucu tarafında gerçekleşir, bu nedenle kullanımdaki tüm cihazları etkiler.",
|
||||
"Maintenance_version": "Uygulama güncellemeleri",
|
||||
"NETWORK_DEVICE_TYPES_description": "Ağ görünümünde hangi aygıt türlerinin ağ aygıtı olarak kullanılmasına izin verildiği. Cihaz tipinin tam olarak eşleşmesi gerekir. <code>Tür</code> Cihaz ayrıntıları'nda belirli bir cihazda ayarlayın. aracılığıyla Cihaza ekleyin <code>+</code> düğme. Mevcut türleri kaldırmayın, yalnızca yenilerini ekleyin.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Ağ aygıtı türleri",
|
||||
"Navigation_About": "Hakkında",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "Uygulama Etkinlikleri",
|
||||
"Navigation_Devices": "Cihazlar",
|
||||
"Navigation_Donations": "",
|
||||
"Navigation_Events": "",
|
||||
"Navigation_Integrations": "",
|
||||
"Navigation_Maintenance": "",
|
||||
"Navigation_Monitoring": "",
|
||||
"Navigation_Network": "",
|
||||
"Navigation_Donations": "Bağış",
|
||||
"Navigation_Events": "Olay",
|
||||
"Navigation_Integrations": "Tümleştirme",
|
||||
"Navigation_Maintenance": "Bakım",
|
||||
"Navigation_Monitoring": "Izleme",
|
||||
"Navigation_Network": "Network",
|
||||
"Navigation_Notifications": "Bildirimler",
|
||||
"Navigation_Plugins": "",
|
||||
"Navigation_Presence": "",
|
||||
"Navigation_Report": "",
|
||||
"Navigation_Plugins": "Eklentiler",
|
||||
"Navigation_Presence": "Varlık",
|
||||
"Navigation_Report": "Gönderilen Raporlar",
|
||||
"Navigation_Settings": "Ayarlar",
|
||||
"Navigation_SystemInfo": "",
|
||||
"Navigation_Workflows": "",
|
||||
"Network_Assign": "",
|
||||
"Navigation_SystemInfo": "Sistem bilgisi",
|
||||
"Navigation_Workflows": "İş Akışları",
|
||||
"Network_Assign": "Yukarıdakilere bağlanın <i class=\"fa fa-server\"></i> Ağ düğümü",
|
||||
"Network_Cant_Assign": "",
|
||||
"Network_Configuration_Error": "Kurulum Hatası",
|
||||
"Network_Connected": "Bağlanmış cihazlar",
|
||||
"Network_ManageAdd": "Cihaz Ekle",
|
||||
"Network_ManageAdd_Name": "Cihaz İsmi",
|
||||
"Network_ManageAdd_Name_text": "Özel karakterler olmadan isim veriniz",
|
||||
"Network_ManageAdd_Port": "",
|
||||
"Network_ManageAdd_Port_text": "",
|
||||
"Network_ManageAdd_Port": "Port Sayısı",
|
||||
"Network_ManageAdd_Port_text": "WiFi ve elektrik hattı için boş bırakın",
|
||||
"Network_ManageAdd_Submit": "Cihaz Ekle",
|
||||
"Network_ManageAdd_Type": "",
|
||||
"Network_ManageAdd_Type_text": "",
|
||||
"Network_ManageAssign": "",
|
||||
"Network_ManageDel": "",
|
||||
"Network_ManageDel_Name": "",
|
||||
"Network_ManageDel_Name_text": "",
|
||||
"Network_ManageDel_Submit": "",
|
||||
"Network_ManageAdd_Type": "Cihaz Türü",
|
||||
"Network_ManageAdd_Type_text": "-- Tür Seçin --",
|
||||
"Network_ManageAssign": "Atamak",
|
||||
"Network_ManageDel": "Cihazı Sil",
|
||||
"Network_ManageDel_Name": "Silinecek cihaz",
|
||||
"Network_ManageDel_Name_text": "-- Cihaz Seçiniz --",
|
||||
"Network_ManageDel_Submit": "Sil",
|
||||
"Network_ManageDevices": "Cihazları Yönet",
|
||||
"Network_ManageEdit": "",
|
||||
"Network_ManageEdit_ID": "",
|
||||
"Network_ManageEdit_ID_text": "",
|
||||
"Network_ManageEdit": "Cihazı Güncelle",
|
||||
"Network_ManageEdit_ID": "Güncellenecek cihaz",
|
||||
"Network_ManageEdit_ID_text": "-- Düzenlemek için Cihaz Seçin --",
|
||||
"Network_ManageEdit_Name": "Yeni Cihaz İsmi",
|
||||
"Network_ManageEdit_Name_text": "",
|
||||
"Network_ManageEdit_Port": "",
|
||||
"Network_ManageEdit_Port_text": "",
|
||||
"Network_ManageEdit_Name_text": "Özel karakterler içermeyen ad",
|
||||
"Network_ManageEdit_Port": " Yeni Port Sayısı",
|
||||
"Network_ManageEdit_Port_text": "WiFi ve elektrik hattı için boş bırakın",
|
||||
"Network_ManageEdit_Submit": "Ayarları Kaydet",
|
||||
"Network_ManageEdit_Type": "",
|
||||
"Network_ManageEdit_Type_text": "",
|
||||
"Network_ManageLeaf": "",
|
||||
"Network_ManageUnassign": "",
|
||||
"Network_ManageEdit_Type": "Yeni Cihaz Türü",
|
||||
"Network_ManageEdit_Type_text": "-- Tür Seçin --",
|
||||
"Network_ManageLeaf": "Atamayı yönet",
|
||||
"Network_ManageUnassign": "Atamayı kaldır",
|
||||
"Network_NoAssignedDevices": "",
|
||||
"Network_NoDevices": "",
|
||||
"Network_NoDevices": "Yapılandırılacak cihaz yok",
|
||||
"Network_Node": "",
|
||||
"Network_Node_Name": "",
|
||||
"Network_Parent": "",
|
||||
@@ -541,12 +539,12 @@
|
||||
"Plugins_no_control": "",
|
||||
"Presence_CalHead_day": "gün",
|
||||
"Presence_CalHead_lang": "",
|
||||
"Presence_CalHead_month": "",
|
||||
"Presence_CalHead_month": "ay",
|
||||
"Presence_CalHead_quarter": "çeyrek",
|
||||
"Presence_CalHead_week": "hafta",
|
||||
"Presence_CalHead_year": "yıl",
|
||||
"Presence_CallHead_Devices": "Cihazlar",
|
||||
"Presence_Key_OnlineNow": "",
|
||||
"Presence_Key_OnlineNow": "Şimdi çevrimiçi",
|
||||
"Presence_Key_OnlineNow_desc": "",
|
||||
"Presence_Key_OnlinePast": "",
|
||||
"Presence_Key_OnlinePastMiss": "",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "",
|
||||
"test_event_icon": "",
|
||||
"test_event_tooltip": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"About_Design": "Призначений для:",
|
||||
"About_Exit": "Вийти",
|
||||
"About_Title": "Сканер безпеки мережі та структура сповіщень",
|
||||
"AppEvents_AppEventProcessed": "",
|
||||
"AppEvents_AppEventProcessed": "Оброблено",
|
||||
"AppEvents_DateTimeCreated": "Зареєстровано",
|
||||
"AppEvents_Extra": "Екстра",
|
||||
"AppEvents_GUID": "GUID події програми",
|
||||
@@ -22,7 +22,7 @@
|
||||
"AppEvents_ObjectPlugin": "Пов’язаний плагін",
|
||||
"AppEvents_ObjectPrimaryID": "Основний ідентифікатор",
|
||||
"AppEvents_ObjectSecondaryID": "Вторинний ідентифікатор",
|
||||
"AppEvents_ObjectStatus": "Статус (під час журналу)",
|
||||
"AppEvents_ObjectStatus": "Зареєстрований статус",
|
||||
"AppEvents_ObjectStatusColumn": "Колонка статусу",
|
||||
"AppEvents_ObjectType": "Тип об'єкта",
|
||||
"AppEvents_Plugin": "Плагін",
|
||||
@@ -225,7 +225,7 @@
|
||||
"Device_TableHead_Name": "Ім'я",
|
||||
"Device_TableHead_NetworkSite": "Мережевий сайт",
|
||||
"Device_TableHead_Owner": "Власник",
|
||||
"Device_TableHead_Parent_MAC": "MAC батьківського вузла",
|
||||
"Device_TableHead_Parent_MAC": "Узел родительской сети",
|
||||
"Device_TableHead_Port": "Порт",
|
||||
"Device_TableHead_PresentLastScan": "Присутність",
|
||||
"Device_TableHead_RowID": "ID рядка",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "все",
|
||||
"Device_Title": "Пристрої",
|
||||
"Devices_Filters": "Фільтри",
|
||||
"Donations_Others": "інші",
|
||||
"Donations_Platforms": "Спонсорські платформи",
|
||||
"Donations_Text": "Привіт 👋! </br> Дякуємо, що натиснули цей пункт меню 😅 </br> </br> Я намагаюся зібрати пожертви, щоб зробити ваше програмне забезпечення кращим. Крім того, це допоможе мені не згоріти, тому я можу підтримувати цю програму довше. Будь-яке невелике (постійне чи ні) спонсорство спонукає мене докласти більше зусиль до цієї програми. </br> Я хотів би скоротити свій робочий тиждень і в час, що залишився, повністю зосередитися на NetAlertX. Ви отримаєте більше функціональності, досконаліший додаток і менше помилок. </br> </br> Дякую, що прочитали – я вдячний за будь-яку підтримку ❤🙏 </br> </br> TL;DR: Підтримуючи мене, ви отримуєте: </br> </br> <ul> <li>Регулярні оновлення для захисту ваших даних і родини 🔄</li><li>Менше помилок 🐛🔫</li><li>Краще та більше функціональність➕</li><li>Я не згорів 🔥🤯</li><li>Менш поспішних випусків 💨</li><li>Кращі документи📚</li><li>Швидша та краща підтримка із проблемами 🆘</li></ul> </br> 📧Напишіть мені електронною поштою на <a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a>, якщо ви хочете зв’язатися з нами або якщо я маю додати інші платформи спонсорства. </br>",
|
||||
"Donations_Title": "Пожертви",
|
||||
"ENABLE_PLUGINS_description": "Вмикає функції <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">плагінів</a>. Завантаження плагінів вимагає більше апаратних ресурсів, тому ви можете вимкнути їх у системі з низьким енергоспоживанням.",
|
||||
"ENABLE_PLUGINS_name": "Увімкнути плагіни",
|
||||
"ENCRYPTION_KEY_description": "Ключ шифрування даних.",
|
||||
@@ -338,7 +334,7 @@
|
||||
"General_icon": "<i class=\"fa fa-gears\"></i>",
|
||||
"HRS_TO_KEEP_NEWDEV_description": "Це налаштування обслуговування <b>ВИДАЛЕННЯ пристроїв</b>. Якщо ввімкнено (<code>0</code> вимкнено), пристрої, позначені як <b>Новий пристрій</b>, буде видалено, якщо час їхнього <b>першого сеансу</b> був старшим за вказані години в цьому налаштування. Використовуйте це налаштування, якщо ви хочете автоматично видаляти <b>Нові пристрої</b> через <code>X</code> годин.",
|
||||
"HRS_TO_KEEP_NEWDEV_name": "Видаліть нові пристрої після",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Це налаштування обслуговування <b>ВИДАЛЕННЯ пристроїв</b>. Якщо ввімкнути (<code>0</code> вимкнено), пристрої, які <b>офлайн</b> і дата їх <b>останнього вимкнення</b> старші за вказані години в цьому параметрі, будуть бути видалено. Використовуйте це налаштування, якщо ви хочете автоматично видаляти <b>Автономні пристрої</b> після <code>X</code> годин роботи в режимі офлайн.",
|
||||
"HRS_TO_KEEP_OFFDEV_description": "Це налаштування обслуговування <b>ВИДАЛЕННЯ пристроїв</b>. Якщо ввімкнено (<code>0</code> вимкнено), пристрої, які <b>офлайн</b>, та їх <b>Останнє підключення</b> дата та час старіші за вказані години в цьому налаштуванні, будуть видалені. Використовуйте це налаштування, якщо ви хочете автоматично видаляти <b>офлайн-пристрої</b> після <code>X</code> годин перебування в мережі.",
|
||||
"HRS_TO_KEEP_OFFDEV_name": "Видаліть офлайн-пристрої після",
|
||||
"LOADED_PLUGINS_description": "Які плагіни завантажити. Додавання плагінів може уповільнити роботу програми. Дізнайтеся більше про те, які плагіни потрібно ввімкнути, типи чи параметри сканування в <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md \">документи плагінів</a>. Вивантажені плагіни втратять налаштування. Лише <code>вимкнені</code> плагіни можна вивантажити.",
|
||||
"LOADED_PLUGINS_name": "Завантажені плагіни",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "Інструменти обслуговування",
|
||||
"Maintenance_Tool_DownloadConfig": "Експорт налаштувань",
|
||||
"Maintenance_Tool_DownloadConfig_text": "Завантажте повну резервну копію конфігурації налаштувань, яка зберігається у файлі <code>app.conf</code>.",
|
||||
"Maintenance_Tool_DownloadWorkflows": "Експорт робочих процесів",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "Завантажте повну резервну копію робочих процесів, які зберігаються у файлі <code>workflows.json</code>.",
|
||||
"Maintenance_Tool_ExportCSV": "Експорт пристроїв (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti": "Експорт пристроїв (csv)",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "Ви впевнені, що хочете створити файл CSV?",
|
||||
@@ -465,7 +463,7 @@
|
||||
"NETWORK_DEVICE_TYPES_description": "Які типи пристроїв дозволено використовувати як мережеві пристрої в поданні мережі. Тип пристрою має точно відповідати налаштуванню <code>Тип</code> на певному пристрої в Деталях пристрою. Додайте його на пристрій за допомогою кнопки <code>+</code>. Не видаляйте існуючі типи, лише додайте нові.",
|
||||
"NETWORK_DEVICE_TYPES_name": "Типи мережевих пристроїв",
|
||||
"Navigation_About": "про",
|
||||
"Navigation_AppEvents": "",
|
||||
"Navigation_AppEvents": "События приложения",
|
||||
"Navigation_Devices": "Пристрої",
|
||||
"Navigation_Donations": "Пожертви",
|
||||
"Navigation_Events": "Події",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "Автоматичне оновлення інтерфейсу користувача",
|
||||
"VERSION_description": "Допоміжне значення версії або позначки часу, щоб перевірити, чи було оновлено додаток.",
|
||||
"VERSION_name": "Версія або позначка часу",
|
||||
"WF_Action_Add": "Додати дію",
|
||||
"WF_Action_field": "Поле",
|
||||
"WF_Action_type": "Тип",
|
||||
"WF_Action_value": "Значення",
|
||||
"WF_Actions": "Дії",
|
||||
"WF_Add": "Додати робочий процес",
|
||||
"WF_Add_Condition": "Додати умову",
|
||||
"WF_Add_Group": "Додати групу",
|
||||
"WF_Condition_field": "Поле",
|
||||
"WF_Condition_operator": "Оператор",
|
||||
"WF_Condition_value": "Значення",
|
||||
"WF_Conditions": "Умови",
|
||||
"WF_Conditions_logic_rules": "Логічні правила",
|
||||
"WF_Duplicate": "Дубльований робочий процес",
|
||||
"WF_Enabled": "Робочий процес увімкнено",
|
||||
"WF_Export": "Робочий процес експорту",
|
||||
"WF_Export_Copy": "Скопіюйте наведений нижче робочий процес і імпортуйте його, де потрібно.",
|
||||
"WF_Import": "Робочий процес імпорту",
|
||||
"WF_Import_Copy": "Вставте робочий процес, який ви скопіювали раніше.",
|
||||
"WF_Name": "Назва робочого процесу",
|
||||
"WF_Remove": "Видалити робочий процес",
|
||||
"WF_Remove_Copy": "Ви хочете видалити цей робочий процес?",
|
||||
"WF_Save": "Зберегти робочі процеси",
|
||||
"WF_Trigger": "Тригер",
|
||||
"WF_Trigger_event_type": "Тип події",
|
||||
"WF_Trigger_type": "Тип тригера",
|
||||
"add_icon_event_icon": "фа-квадрат-плюс",
|
||||
"add_icon_event_tooltip": "додати новий значок",
|
||||
"add_option_event_icon": "фа-квадрат-плюс",
|
||||
@@ -714,8 +738,8 @@
|
||||
"settings_readonly": "Неможливо ЧИТАТИ або ЗАПИСАТИ <code>app.conf</code>. Спробуйте перезапустити контейнер і прочитайте <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/FILE_PERMISSIONS.md\" target=\"_blank\">документацію щодо дозволів на файли</a>",
|
||||
"settings_saved": "<br/>Налаштування збережено. <br/> Перезавантаження... <br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
|
||||
"settings_system_icon": "фа-твердий фа-передача",
|
||||
"settings_system_label": "система",
|
||||
"settings_system_label": "Система",
|
||||
"settings_update_item_warning": "Оновіть значення нижче. Слідкуйте за попереднім форматом. <b>Перевірка не виконана.</b>",
|
||||
"test_event_icon": "fa-vial-circle- check",
|
||||
"test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"API_CUSTOM_SQL_description": "您可以指定一个自定义 SQL 查询,它将生成一个 JSON 文件,然后通过 <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\"><code>table_custom_endpoint.json</code> 文件端点</a> 公开它。",
|
||||
"API_CUSTOM_SQL_name": "自定义终点",
|
||||
"API_TOKEN_description": "",
|
||||
"API_TOKEN_description": "用于安全通信的API令牌。生成一个或输入任何值。它在请求标头中发送,并用于 <code>SYNC</code> 插件、GraphQL服务器和其他API端点中。 您可以使用API端点创建自定义集成,详情请参考此 <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md\" target=\"_blank\">API 文档</a>。",
|
||||
"API_TOKEN_name": "",
|
||||
"API_display_name": "API",
|
||||
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
|
||||
@@ -244,10 +244,6 @@
|
||||
"Device_Tablelenght_all": "所有",
|
||||
"Device_Title": "设备",
|
||||
"Devices_Filters": "",
|
||||
"Donations_Others": "其他",
|
||||
"Donations_Platforms": "赞助平台",
|
||||
"Donations_Text": "嘿👋!</br> 感谢您点击此菜单项😅 </br> </br> 我正在尝试收集一些捐款来为您制作更好的软件。此外,这将有助于我避免精疲力竭,这样我就可以更长时间地支持这个应用程序。任何小额(无论是否经常性)赞助都会让我想在这个应用程序上投入更多精力。</br> 我希望缩短我的工作周,并在剩余的时间里完全专注于 NetAlertX。您将获得更多功能、更精致的应用程序和更少的错误。 </br> </br> 感谢阅读 - 我感谢任何支持 ❤🙏 </br> </br> TL;DR:通过支持我,您将获得:</br> </br> <ul><li>定期更新以确保您的数据和家人安全🔄</li><li>更少的错误🐛🔫</li><li>更好、更多的功能➕</li><li>我不会精疲力竭🔥🤯</li><li>更不仓促的发布💨</li><li>更好的文档📚</li><li>更快、更好地解决问题🆘</li></ul> </br> 📧如果您想联系我或者我应该添加其他赞助平台,请给我发电子邮件至<a href='mailto:jokob@duck.com?subject=NetAlertX'>jokob@duck.com</a>。 </br>",
|
||||
"Donations_Title": "捐款",
|
||||
"ENABLE_PLUGINS_description": "启用<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">插件</a>功能。加载插件需要更多硬件资源,因此您可能需要在低功耗系统上禁用它们。",
|
||||
"ENABLE_PLUGINS_name": "启用插件",
|
||||
"ENCRYPTION_KEY_description": "",
|
||||
@@ -367,6 +363,8 @@
|
||||
"Maintenance_Title": "维护工具",
|
||||
"Maintenance_Tool_DownloadConfig": "",
|
||||
"Maintenance_Tool_DownloadConfig_text": "",
|
||||
"Maintenance_Tool_DownloadWorkflows": "",
|
||||
"Maintenance_Tool_DownloadWorkflows_text": "",
|
||||
"Maintenance_Tool_ExportCSV": "CSV 导出",
|
||||
"Maintenance_Tool_ExportCSV_noti": "CSV 导出",
|
||||
"Maintenance_Tool_ExportCSV_noti_text": "您确定要生成 CSV 文件吗?",
|
||||
@@ -672,6 +670,32 @@
|
||||
"UI_REFRESH_name": "自动刷新界面",
|
||||
"VERSION_description": "",
|
||||
"VERSION_name": "",
|
||||
"WF_Action_Add": "",
|
||||
"WF_Action_field": "",
|
||||
"WF_Action_type": "",
|
||||
"WF_Action_value": "",
|
||||
"WF_Actions": "",
|
||||
"WF_Add": "",
|
||||
"WF_Add_Condition": "",
|
||||
"WF_Add_Group": "",
|
||||
"WF_Condition_field": "",
|
||||
"WF_Condition_operator": "",
|
||||
"WF_Condition_value": "",
|
||||
"WF_Conditions": "",
|
||||
"WF_Conditions_logic_rules": "",
|
||||
"WF_Duplicate": "",
|
||||
"WF_Enabled": "",
|
||||
"WF_Export": "",
|
||||
"WF_Export_Copy": "",
|
||||
"WF_Import": "",
|
||||
"WF_Import_Copy": "",
|
||||
"WF_Name": "",
|
||||
"WF_Remove": "",
|
||||
"WF_Remove_Copy": "",
|
||||
"WF_Save": "",
|
||||
"WF_Trigger": "",
|
||||
"WF_Trigger_event_type": "",
|
||||
"WF_Trigger_type": "",
|
||||
"add_icon_event_icon": "",
|
||||
"add_icon_event_tooltip": "",
|
||||
"add_option_event_icon": "",
|
||||
@@ -718,4 +742,4 @@
|
||||
"settings_update_item_warning": "更新下面的值。请注意遵循先前的格式。<b>未执行验证。</b>",
|
||||
"test_event_icon": "",
|
||||
"test_event_tooltip": "在测试设置之前,请先保存更改。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,112 +1 @@
|
||||
# 🔌 Plugins
|
||||
|
||||
NetAlertX supports additional plugins to extend its functionality, each with its own settings and options. Plugins can be loaded via the General -> `LOADED_PLUGINS` setting. For custom plugin development, refer to the [Plugin development guide](/docs/PLUGINS_DEV.md).
|
||||
|
||||
>[!NOTE]
|
||||
> Please check this [Plugins debugging guide](https://github.com/jokob-sk/NetAlertX/blob/main/docs/DEBUG_PLUGINS.md) and the corresponding Plugin documentation in the below table if you are facing issues.
|
||||
|
||||
## ⚡ Quick start
|
||||
|
||||
> [!TIP]
|
||||
> You can load additional Plugins via the General -> `LOADED_PLUGINS` setting.
|
||||
|
||||
1. Pick your `🔍 dev scanner` plugin (e.g. `ARPSCAN` or `NMAPDEV`), or import devices into the application with an `📥 importer` plugin. (See **✅Enabling plugins** below)
|
||||
2. Pick a `▶️ publisher` plugin, if you want to send notifications. If you don't see a publisher you'd like to use, look at the [📚_publisher_apprise](/front/plugins/_publisher_apprise/) plugin which is a proxy for over 80 notification services.
|
||||
3. Setup your [Network topology diagram](/docs/NETWORK_TREE.md)
|
||||
4. Fine-tune [Notifications](/docs/NOTIFICATIONS.md)
|
||||
5. [Backup your setup](/docs/BACKUPS.md)
|
||||
6. Contribute and [Create custom plugins](/docs/PLUGINS_DEV.md)
|
||||
|
||||
|
||||
## 📑 Available Plugins
|
||||
|
||||
Device-detecting plugins insert values into the `CurrentScan` database table. The plugins that are not required are safe to ignore, however, it makes sense to have at least some device-detecting plugins enabled, such as `ARPSCAN` or `NMAPDEV`.
|
||||
|
||||
|
||||
| ID | Type | Description | Features | Required | Data source | Detailed docs |
|
||||
|---------------|---------|--------------------------------------------|----------|----------|--------------|---------------------------------------------------------------------|
|
||||
| `APPRISE` | ▶️ | Apprise notification proxy | | | Script | [_publisher_apprise](/front/plugins/_publisher_apprise/) |
|
||||
| `ARPSCAN` | 🔍 | ARP-scan on current network | | | Script | [arp_scan](/front/plugins/arp_scan/) |
|
||||
| `AVAHISCAN` | 🆎 | Avahi (mDNS-based) name resolution | | | Script | [avahi_scan](/front/plugins/avahi_scan/) |
|
||||
| `ASUSWRT` | 🔍 | Import connected devices from AsusWRT | | | Script | [asuswrt_import](/front/plugins/asuswrt_import/) |
|
||||
| `CSVBCKP` | ⚙ | CSV devices backup | | | Script | [csv_backup](/front/plugins/csv_backup/) |
|
||||
| `CUSTPROP` | ⚙ | Managing custom device properties values | | Yes | Template | [custom_props](/front/plugins/custom_props/) |
|
||||
| `DBCLNP` | ⚙ | Database cleanup | | Yes* | Script | [db_cleanup](/front/plugins/db_cleanup/) |
|
||||
| `DDNS` | ⚙ | DDNS update | | | Script | [ddns_update](/front/plugins/ddns_update/) |
|
||||
| `DHCPLSS` | 🔍/📥/🆎| Import devices from DHCP leases | | | Script | [dhcp_leases](/front/plugins/dhcp_leases/) |
|
||||
| `DHCPSRVS` | ♻ | DHCP servers | | | Script | [dhcp_servers](/front/plugins/dhcp_servers/) |
|
||||
| `FREEBOX` | 🔍/♻/🆎| Pull data and names from Freebox/Iliadbox | | | Script | [freebox](/front/plugins/freebox/) |
|
||||
| `ICMP` | 🔍 | ICMP (ping) status checker | | | Script | [icmp_scan](/front/plugins/icmp_scan/) |
|
||||
| `INTRNT` | 🔍 | Internet IP scanner | | | Script | [internet_ip](/front/plugins/internet_ip/) |
|
||||
| `INTRSPD` | ♻ | Internet speed test | | | Script | [internet_speedtest](/front/plugins/internet_speedtest/) |
|
||||
| `IPNEIGH` | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | | Script | [ipneigh](/front/plugins/ipneigh/) |
|
||||
| `LUCIRPC` | 🔍 | Import connected devices from OpenWRT | | | Script | [luci_import](/front/plugins/luci_import/) |
|
||||
| `MAINT` | ⚙ | Maintenance of logs, etc. | | | Script | [maintenance](/front/plugins/maintenance/) |
|
||||
| `MQTT` | ▶️ | MQTT for synching to Home Assistant | | | Script | [_publisher_mqtt](/front/plugins/_publisher_mqtt/) |
|
||||
| `NBTSCAN` | 🆎 | Nbtscan (NetBIOS-based) name resolution | | | Script | [nbtscan_scan](/front/plugins/nbtscan_scan/) |
|
||||
| `NEWDEV` | ⚙ | New device template | | Yes | Template | [newdev_template](/front/plugins/newdev_template/) |
|
||||
| `NMAP` | ♻ | Nmap port scanning & discovery | | | Script | [nmap_scan](/front/plugins/nmap_scan/) |
|
||||
| `NMAPDEV` | 🔍 | Nmap dev scan on current network | | | Script | [nmap_dev_scan](/front/plugins/nmap_dev_scan/) |
|
||||
| `NSLOOKUP` | 🆎 | NSLookup (DNS-based) name resolution | | | Script | [nslookup_scan](/front/plugins/nslookup_scan/) |
|
||||
| `NTFPRCS` | ⚙ | Notification processing | | Yes | Template | [notification_processing](/front/plugins/notification_processing/)|
|
||||
| `NTFY` | ▶️ | NTFY notifications | | | Script | [_publisher_ntfy](/front/plugins/_publisher_ntfy/) |
|
||||
| `OMDSDN` | 📥/🆎 | OMADA TP-Link import | 🖧 🔄 | | Script | [omada_sdn_imp](/front/plugins/omada_sdn_imp/) |
|
||||
| `PIHOLE` | 🔍/🆎/📥| Pi-hole device import & sync | | | SQLite DB | [pihole_scan](/front/plugins/pihole_scan/) |
|
||||
| `PUSHSAFER` | ▶️ | Pushsafer notifications | | | Script | [_publisher_pushsafer](/front/plugins/_publisher_pushsafer/) |
|
||||
| `PUSHOVER` | ▶️ | Pushover notifications | | | Script | [_publisher_pushover](/front/plugins/_publisher_pushover/) |
|
||||
| `SETPWD` | ⚙ | Set password | | Yes | Template | [set_password](/front/plugins/set_password/) |
|
||||
| `SMTP` | ▶️ | Email notifications | | | Script | [_publisher_email](/front/plugins/_publisher_email/) |
|
||||
| `SNMPDSC` | 🔍/📥 | SNMP device import & sync | | | Script | [snmp_discovery](/front/plugins/snmp_discovery/) |
|
||||
| `SYNC` | 🔍/⚙/📥| Sync & import from NetAlertX instances | 🖧 🔄 | Yes | Script | [sync](/front/plugins/sync/) |
|
||||
| `TELEGRAM` | ▶️ | Telegram notifications | | | Script | [_publisher_telegram](/front/plugins/_publisher_telegram/) |
|
||||
| `UI` | ♻ | UI specific settings | | Yes | Template | [ui_settings](/front/plugins/ui_settings/) |
|
||||
| `UNFIMP` | 🔍/📥/🆎| UniFi device import & sync | 🖧 | | Script | [unifi_import](/front/plugins/unifi_import/) |
|
||||
| `VNDRPDT` | ⚙ | Vendor database update | | | Script | [vendor_update](/front/plugins/vendor_update/) |
|
||||
| `WEBHOOK` | ▶️ | Webhook notifications | | | Script | [_publisher_webhook](/front/plugins/_publisher_webhook/) |
|
||||
| `WEBMON` | ♻ | Website down monitoring | | | Script | [website_monitor](/front/plugins/website_monitor/) |
|
||||
| `WOL` | ♻ | Automatic wake-on-lan | | | Script | [wake_on_lan](/front/plugins/wake_on_lan/) |
|
||||
|
||||
|
||||
> \* The database cleanup plugin (`DBCLNP`) is not _required_ but the app will become unusable after a while if not executed.
|
||||
> ❌ marked for removal
|
||||
> ⌚It's recommended to use the same schedule interval for all plugins responsible for discovering new devices.
|
||||
|
||||
## Plugin types
|
||||
|
||||
|
||||
| Plugin type | Icon | Description | When to run | Required | Data source [?](/docs/PLUGINS_DEV.md) |
|
||||
| -------------- | ---- | ---------------------------------------------------------------- | ----------------------------------- | -------- | ------------------------------------- |
|
||||
| publisher | ▶️ | Sending notifications to services. | `on_notification` | ✖ | Script |
|
||||
| dev scanner | 🔍 | Create devices in the app, manages online/offline device status. | `schedule` | ✖ | Script / SQLite DB |
|
||||
| name discovery | 🆎 | Discovers names of devices via various protocols. | `before_name_updates`, `schedule` | ✖ | Script |
|
||||
| importer | 📥 | Importing devices from another service. | `schedule` | ✖ | Script / SQLite DB |
|
||||
| system | ⚙ | Providing core system functionality. | `schedule` / always on | ✖/✔ | Script / Template |
|
||||
| other | ♻ | Other plugins | misc | ✖ | Script / Template |
|
||||
|
||||
## Features
|
||||
|
||||
| Icon | Description |
|
||||
| ---- | ------------------------------------------------------------ |
|
||||
| 🖧 | Auto-imports the network topology diagram |
|
||||
| 🔄 | Has the option to sync some data back into the plugin source |
|
||||
|
||||
|
||||
## ✅Enabling plugins
|
||||
|
||||
Plugins can be enabled via Settings, and can be disabled as needed.
|
||||
|
||||
1. Research which plugin you'd like to use, enable `DISCOVER_PLUGINS` and load the required plugins in Settings via the `LOADED_PLUGINS` setting.
|
||||
1. Save the changes and review the Settings of the newly loaded plugins.
|
||||
1. Change the `<prefix>_RUN` Setting to the recommended or custom value as per the documentation of the given setting
|
||||
- If using `schedule` on a `🔍 dev scanner` plugin, make sure the schedules are the same across all `🔍 dev scanner` plugins
|
||||
|
||||
### Disabling, Unloading and Ignoring plugins
|
||||
|
||||
1. Change the `<prefix>_RUN` Setting to `disabled` if you want to disable the plugin, but keep the settings
|
||||
1. If you want to speed up the application, you can unload the plugin by unselecting it in the `LOADED_PLUGINS` setting.
|
||||
- Careful, once you save the Settings Unloaded plugin settings will be lost (old `app.conf` files are kept in the `/config` folder)
|
||||
1. You can completely ignore plugins by placing a `ignore_plugin` file into the plugin directory. Ignored plugins won't show up in the `LOADED_PLUGINS` setting.
|
||||
|
||||
## 🆕 Developing new custom plugins
|
||||
|
||||
If you want to develop a custom plugin, please read this [Plugin development guide](/docs/PLUGINS_DEV.md).
|
||||
Plugins docs have been relocated. Check the new [Plugins Overview location](/docs/PLUGINS.md).
|
||||
@@ -16,7 +16,8 @@ from plugin_utils import get_plugins_configs
|
||||
from logger import mylog, Logger
|
||||
from const import pluginsPath, fullDbPath, logPath
|
||||
from helper import timeNowTZ, get_setting_value
|
||||
from notification import write_notification
|
||||
|
||||
from messaging.in_app import write_notification
|
||||
import conf
|
||||
|
||||
# Make sure the TIMEZONE for logging is correct
|
||||
|
||||
@@ -24,7 +24,7 @@ from plugin_utils import getPluginObject
|
||||
from plugin_helper import Plugin_Objects
|
||||
from logger import mylog, Logger, append_line_to_file
|
||||
from helper import timeNowTZ, get_setting_value, bytes_to_string, sanitize_string, cleanDeviceName
|
||||
from notification import Notification_obj
|
||||
from models.notification_instance import NotificationInstance
|
||||
from database import DB, get_device_stats
|
||||
|
||||
pluginName = 'TESTONLY'
|
||||
|
||||
@@ -17,7 +17,7 @@ from const import confFileName, logPath
|
||||
from plugin_helper import Plugin_Objects
|
||||
from logger import mylog, Logger, append_line_to_file
|
||||
from helper import timeNowTZ, get_setting_value
|
||||
from notification import Notification_obj
|
||||
from models.notification_instance import NotificationInstance
|
||||
from database import DB
|
||||
from pytz import timezone
|
||||
|
||||
@@ -50,8 +50,8 @@ def main():
|
||||
# Initialize the Plugin obj output file
|
||||
plugin_objects = Plugin_Objects(RESULT_FILE)
|
||||
|
||||
# Create a Notification_obj instance
|
||||
notifications = Notification_obj(db)
|
||||
# Create a NotificationInstance instance
|
||||
notifications = NotificationInstance(db)
|
||||
|
||||
# Retrieve new notifications
|
||||
new_notifications = notifications.getNew()
|
||||
|
||||
@@ -658,7 +658,7 @@
|
||||
"description": [
|
||||
{
|
||||
"language_code": "en_us",
|
||||
"string": "Email address to which the notification will be send to."
|
||||
"string": "Email address to which the notification will be send to. You can enter multiple emails separated by a comma (<code>,</code>)."
|
||||
},
|
||||
{
|
||||
"language_code": "es_es",
|
||||
|
||||