Merge branch 'main' into feat/adguard-export-plugin

This commit is contained in:
Jokob @NetAlertX
2026-05-30 08:53:04 +10:00
committed by GitHub
216 changed files with 15022 additions and 4127 deletions

View File

@@ -8,10 +8,23 @@ description: NetAlertX coding standards and conventions. Use this when writing c
- ask me to review before going to each next step (mention n step out of x) (AI only)
- before starting, prepare implementation plan (AI only)
- ask me to review it and ask any clarifying questions first
- add test creation as last step - follow repo architecture patterns - do not place in the root of /test
- add test creation as last step - follow repo architecture patterns - do not place in the root of `/test`
- code has to be maintainable, no duplicate code
- follow DRY principle - maintainability of code is more important than speed of implementation
- code files should be less than 500 LOC for better maintainability
- DB columns must not contain underscores, use camelCase instead (e.g., deviceInstanceId, not device_instance_id)
- treat DB as temporary storage for stats, long-term configuration should be stored in the `/config` folder, the `/config` folder should allow you to restore most of your functionality (excluding historical data)
- never access DB directly from application layers, always use helper functions in `server/db/db_helper.py` and implement new functionality in handlers (e.g., `DeviceInstance` in `server/models/device_instance.py`)
- always validate and normalize MAC addresses before writing to DB (use `normalize_mac` from `plugin_helper.py`)
- all subprocess calls must set explicit timeouts
- use `timeNowUTC` from `utils.datetime_utils` for all time-related operations and DB timestamps (store all timestamps in UTC)
- use sanitizers from `server/helper.py` for user input before storing in DB
- reuse shared mocks and factories from `test/db_test_helpers.py` for tests, never redefine them locally
- use environment variables for runtime paths, never hardcode paths or use relative paths
- follow existing code style and structure, and ensure backward compatibility with existing installations when submitting PRs
- all code needs to be scalable to handle large networks with thousands of devices (10k+) without performance degradation
- no inline imports, all imports must be at the top of the file
## File Length
@@ -72,6 +85,18 @@ Use sanitizers from `server/helper.py` before storing user input. MAC addresses
- Everything is already writable
- If permissions needed, fix `.devcontainer/scripts/setup.sh`
## Test Helpers — No Duplicate Mocks
Reuse shared mocks and factories from `test/db_test_helpers.py`. Never redefine `DummyDB`, `make_db`, or inline DDL in individual test files.
```python
import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from db_test_helpers import make_db, DummyDB, insert_device, minutes_ago
```
If a helper you need doesn't exist yet, add it to `db_test_helpers.py` — not locally in the test file.
## Path Hygiene
- Use environment variables for runtime paths

View File

@@ -18,12 +18,15 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.11'
- name: Install MkDocs
run: |
pip install mkdocs mkdocs-material
pip install mkdocs-github-admonitions-plugin
pip install \
mkdocs==1.6.0 \
mkdocs-material==9.5.21 \
mkdocs-github-admonitions-plugin==0.1.1 \
mkdocs-glightbox
- name: Build MkDocs
run: mkdocs build

View File

@@ -15,6 +15,37 @@ Before opening a new issue:
- [Check Common Issues & Debug Tips](https://docs.netalertx.com/DEBUG_TIPS#common-issues)
- [Search Closed Issues](https://github.com/netalertx/NetAlertX/issues?q=is%3Aissue+is%3Aclosed)
---
## Contributing without coding knowledge
Writing code is not the only way how you can contribute to the project. Here are some ideas how you can help out otherwise:
- Help improving the documentation (text, typos, use cases, screenshots - all this makes things better)
- Share your favorite project on socials (see [Growth ideas](./GROWTH.md))
- Write a blog post, or a how-to set-up guide
- Write how it helped you to achieve something fun or interesting to simplify your personal or work life
- Help with the translation effort
- Running a nightly or dev build to test for bugs before they make it to the production release
- Report bugs and features with sufficient detail and care (super important to ease everyone's maintenance burden and minimize back-and-forth)
- running a projects test suite
---
## Use of AI
Use of AI-assisted tools is permitted, provided all generated code is reviewed, understood, and verified before submission.
- All AI-generated code must meet the project's **quality, security, and performance standards**.
- Contributors are responsible for **fully understanding** any code they submit, regardless of how it was produced.
- Prefer **clarity and maintainability over cleverness or brevity**. Readable code is always favored over dense or obfuscated implementations.
- Follow the **DRY (Don't Repeat Yourself) principle** where appropriate, without sacrificing readability.
- Do not submit code that you cannot confidently explain or debug.
All changes must pass the **full test suite** before opening a PR.
---
## Submitting Pull Requests (PRs)
@@ -28,11 +59,19 @@ Please:
- Provide a clear title and description for your PR
- If relevant, add or update tests and documentation
- For plugins, refer to the [Plugin Dev Guide](https://docs.netalertx.com/PLUGINS_DEV)
- Switch the PR to DRAFT mode if still being worked on
- Keep PRs **focused and minimal** — avoid unrelated changes in a single PR
- PRs that do not meet these guidelines may be closed without review
## Commit Messages
## Code quality
- Use clear, descriptive commit messages
- Explain *why* a change was made, not just *what* changed
- Reference related issues where applicable
- read and follow the [code-standards](/.github/skills/code-standards/SKILL.md)
## Code Quality
- Read and follow the [code standards](/.github/skills/code-standards/SKILL.md)
---

142
GROWTH.md Normal file
View File

@@ -0,0 +1,142 @@
# 📈 NetAlertX Growth Playbook
If you like NetAlertX and want to help it grow, this is how.
This isnt about spam or "growth hacks." Its just getting the tool in front of people who already have the problem (manual network docs, blind spots, messy networks).
---
## 🎯 Who this is for
* **Homelabbers** → Proxmox, Unraid, Raspberry Pi setups
* **Self-hosters** → moving away from cloud / want local-first
* **Sysadmins / MSPs** → need visibility + fast onboarding
---
## 💬 Where to post (and how)
### Reddit (main channel)
Reddit works *if* you dont sound like marketing.
**Subreddits**
* r/homelab
* r/selfhosted
* r/sysadmin
* r/networking
**What works**
* "Show r/homelab" / "I built this"
* Problem → solution
* Real screenshots or short GIFs
**Example**
> Tired of keeping network diagrams up to date?
> I deployed something that does it automatically.
**Avoid**
* Over-explaining
* Buzzwords
* "Check out my project!!!" energy
**Timing (rough guide)**
* TueThu mornings (US time)
---
### Hacker News (Show HN)
Good fit because NetAlertX is:
* local-first
* privacy-focused
* actually useful
**Title**
> Show HN: NetAlertX network documentation that updates itself
Be ready to answer:
* stack (Python / PHP / JS)
* how discovery works
* privacy / local scanning
---
### Awesome Lists
Low effort, long-term visibility.
Target:
* awesome-selfhosted
* awesome-homelab
Keep it simple:
> NetAlertX automated network discovery and documentation with alerting
---
## 🎥 Content / creators
If you or someone else makes videos, these angles work:
* **First 5 minutes** → "it already found everything"
* **Before vs after** → manual vs NetAlertX
* **Docker setup** → show how easy it is
No need for overproduction—real usage > polished demos.
---
## ⚖️ Positioning (keep it simple)
When explaining NetAlertX, this is the mental model:
| | Manual Docs | Basic Scanners | NetAlertX |
| ------- | ----------------- | -------------- | ------------------------- |
| Updates | Manual / outdated | On demand | **Automatic** |
| Alerts | None | Limited | **New / unknown devices** |
| History | None | None | **Device timeline** |
| Effort | High | Medium | **Set & forget** |
---
## 🧑‍💻 MSP / professional angle
If youre using it in real environments:
* Faster client onboarding
* Better visibility
* Less "what changed?" guessing
Thats the value—keep it grounded. And share your experience 🙏
---
## 🛠 Easy ways to help
* Star the repo
* Post a screenshot of your network
* Mention it when someone asks "how do you track devices?" or "how do you detect presence?"
* Write a quick "how I use it" post
---
## Final note
Authenticity matters more than reach.
If it feels like marketing, people ignore it.
If it feels like "this solved my problem," people pay attention.
Thanks a lot in advance!
- jokob

View File

@@ -21,13 +21,13 @@
</details>
Centralized network visibility and continuous asset discovery.
Centralized network visibility and continuous asset discovery for homelabs, IT teams, MSPs, and distributed environments.
Monitor devices, detect change, and stay aware across distributed networks.
Monitor devices, detect change, and maintain visibility across remote sites, VLANs, branch offices, and segmented networks from a single interface.
NetAlertX provides a centralized "Source of Truth" (NSoT) for network infrastructure. Maintain a real-time inventory of every connected device, identify Shadow IT and unauthorized hardware to maintain regulatory compliance, and automate compliance workflows across distributed sites.
NetAlertX provides a centralized "Source of Truth" (NSoT) for network infrastructure. Maintain a real-time inventory of connected devices, identify Shadow IT and unauthorized hardware, support compliance initiatives, and automate operational workflows across distributed customer environments.
NetAlertX is designed to bridge the gap between simple network scanning and complex SIEM tools, providing actionable insights without the overhead.
Designed to bridge the gap between simple network scanners and complex SIEM platforms, NetAlertX delivers actionable network intelligence and centralized monitoring without the operational overhead.
## Table of Contents
@@ -98,6 +98,10 @@ build your own scanners with the [Plugin system](https://docs.netalertx.com/PLUG
The [workflows module](https://docs.netalertx.com/WORKFLOWS) automates IT governance by enforcing device categorization and cleanup policies. 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.
### MSP & Multi-Site Monitoring
NetAlertX enables centralized monitoring across remote sites and isolated environments through Sync Nodes for VLANs and branch offices, providing unified visibility of assets across multiple networks. It supports [NOC-style wallboard dashboards](https://docs.netalertx.com/ADVISORY_EYES_ON_GLASS/), [Prometheus metrics export](https://docs.netalertx.com/API_METRICS/), workflow automation for device governance, and distributed discovery with centralized alerting for scalable network operations.
## Documentation
<!--- --------------------------------------------------------------------- --->
@@ -126,6 +130,15 @@ Compliance & Hardening:
See [Security Best Practices](https://github.com/netalertx/NetAlertX/security) for more details.
## Designed for MSPs, NOCs & Distributed Networks
NetAlertX supports centralized monitoring across VLANs, branch offices, customer environments, isolated networks, and remote sites.
Using [Sync Nodes](https://docs.netalertx.com/ADVISORY_MULTI_SITE_MONITORING), distributed collectors securely send device inventory and network visibility data back to a central hub, enabling unified monitoring, alerting, and asset tracking across all locations.
This provides MSPs and NOCs with a single operational view of many independent networks, without requiring direct access or centralized scanning infrastructure.
Common deployments include MSP wallboards, NOC dashboards, multi-site inventory monitoring, and remote office discovery.
## FAQ
@@ -157,7 +170,7 @@ Check the [GitHub Issues](https://github.com/netalertx/NetAlertX/issues) for the
## Everything else
<!--- --------------------------------------------------------------------- --->
<a href="https://trendshift.io/repositories/12670" target="_blank"><img src="https://trendshift.io/api/badge/repositories/12670" alt="jokob-sk%2FNetAlertX | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<a href="https://trendshift.io/repositories/19712" target="_blank"><img src="https://trendshift.io/api/badge/repositories/19712" alt="jokob-sk%2FNetAlertX | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
### 📧 Get notified what's new
@@ -170,6 +183,7 @@ Get notified about a new release, what new functionality you can use and about b
- [Fing](https://www.fing.com/) - Network scanner app for your Internet security (Commercial, Phone App, Proprietary hardware)
- [NetBox](https://netboxlabs.com/) - The gold standard for Network Source of Truth (NSoT) and IPAM.
- [Zabbix](https://www.zabbix.com/) or [Nagios](https://www.nagios.org/) - Strong focus on infrastructure monitoring.
- [Domotz](https://www.domotz.com/) - Commercial network monitoring and remote management platform aimed at MSPs, IT teams, and multi-site environments.
- [NetAlertX](https://netalertx.com) - The streamlined, discovery-focused choice for real-time asset intelligence and noise-free alerting.
### 💙 Donations

View File

@@ -30,6 +30,7 @@ REPORT_DASHBOARD_URL='update_REPORT_DASHBOARD_URL_setting'
INTRNT_RUN='schedule'
ARPSCAN_RUN='schedule'
NSLOOKUP_RUN='before_name_updates'
DIGSCAN_RUN='before_name_updates'
AVAHISCAN_RUN='before_name_updates'
NBTSCAN_RUN='before_name_updates'

View File

@@ -4,6 +4,9 @@ For Managed Service Providers (MSPs) and Network Operations Centers (NOC), "Eyes
![filters](./img/ADVISORIES/filters.png)
> [!TIP]
> If you are using Grafana check the `/metrics` endpoint that exposes **Prometheus-compatible metrics** for NetAlertX, including aggregate device counts and per-device status. See the [Metrics API endpoint](./API_METRICS.md) documentation for details.
---
### 1. Configure Auto-Refresh for Live Monitoring

View File

@@ -8,24 +8,29 @@ Effective multi-network monitoring starts with understanding how NetAlertX "sees
* **B. Plan Subnet & Scan Interfaces:** Explicitly configure each accessible segment in `SCAN_SUBNETS` with the corresponding interfaces.
* **C. Remote & Inaccessible Networks:** For networks unreachable via ARP, use these strategies:
* **Alternate Plugins:** Supplement discovery with [SNMPDSC](SNMPDSC) or [DHCP lease imports](https://docs.netalertx.com/PLUGINS/?h=DHCPLSS#available-plugins).
* **Centralized Multi-Tenant Management using Sync Nodes:** Run secondary NetAlertX instances on isolated networks and aggregate data using the **SYNC plugin**.
* **Sync Hub for MSP & Multi-Site Deployments:** Run secondary NetAlertX instances on isolated networks and aggregate data using the **SYNC plugin**. Use the [`SYNC_BEHAVIOR`](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/sync/README.md#hub-device-write-behavior-sync_behavior) setting on the hub to control whether the hub inherits device config from nodes or manages it independently.
* **Manual Entry:** For static assets where only ICMP (ping) status is needed.
> [!TIP]
> Explore the [remote networks](./REMOTE_NETWORKS.md) documentation for more details on how to set up the approaches menationed above.
> Explore the [remote networks](./REMOTE_NETWORKS.md) documentation for more details on how to set up the approaches mentioned above.
---
### 2. Automating IT Asset Inventory with Workflows
[Workflows](./WORKFLOWS.md) are the "engine" of NetAlertX, reducing manual overhead as your device list grows.
[Workflows](./WORKFLOWS.md) are the "engine" of NetAlertX, reducing manual overhead as your device list grows. See some examples below:
#### A. Logical Ownership & VLAN Tagging
Create a workflow triggered on **Device Creation** to:
* **A. Logical Ownership & VLAN Tagging:** Create a workflow triggered on **Device Creation** to:
1. Inspect the IP/Subnet.
2. Set `devVlan` or `devOwner` custom fields automatically.
#### B. Auto-Grouping:
Use conditional logic to categorize devices.
* **B. Auto-Grouping:** Use conditional logic to categorize devices.
* *Example:* If `devLastIP == 10.10.20.*`, then `Set devLocation = "BranchOffice"`.
```json
@@ -56,9 +61,9 @@ Effective multi-network monitoring starts with understanding how NetAlertX "sees
]
}
```
#### C. Sync Node Tracking
* **C. Sync Node Tracking:** When using multiple instances, ensure all synchub nodes have a descriptive `SYNC_node_name` name to distinguish between sites.
When using multiple instances, ensure all sync hub nodes have a descriptive `SYNC_node_name` name to distinguish between sites.
> [!TIP]
> Always test new workflows in a "Staging" instance. A misconfigured workflow can trigger thousands of unintended updates across your database.
@@ -107,6 +112,7 @@ As your environment grows, tuning the underlying engine is vital to maintain a s
* **Plugin Scheduling:** Avoid "Scan Storms" by staggering plugin execution. Running intensive tasks like `NMAP` or `MASS_DNS` simultaneously can spike CPU and cause database locks.
* **Database Health:** Large-scale monitoring generates massive event logs. Use the **[DBCLNP (Database Cleanup)](https://www.google.com/search?q=https://docs.netalertx.com/PLUGINS/%23dbclnp)** plugin to prune old records and keep the SQLite database performant.
* **Resource Management:** For high-device counts, consider increasing the memory limit for the container and utilizing `tmpfs` for temporary files to reduce SD card/disk I/O bottlenecks.
* Enable the `DEEP_SLEEP` setting.
> [!IMPORTANT]
> For a deep dive into hardware requirements, database vacuuming, and specific environment variables for high-load instances, refer to the full **[Performance Optimization Guide](https://docs.netalertx.com/PERFORMANCE/)**.

View File

@@ -0,0 +1,147 @@
# MSP & Multi-Site Monitoring with NetAlertX
NetAlertX supports centralized monitoring across remote sites, customer environments, branch offices, VLANs, and isolated networks using distributed Sync Nodes.
Deploy lightweight NetAlertX instances inside remote or segmented networks, then securely aggregate device inventory and network visibility data into a central hub for unified monitoring, alerting, and asset management.
![Sync Hub Setup Diagram](https://raw.githubusercontent.com/netalertx/NetAlertX/refs/heads/main/front/plugins/sync/sync_hub.png)
---
## Common MSP & Multi-Site Use Cases
### Managed Service Providers (MSPs)
Monitor multiple customer environments from a centralized dashboard while keeping scanning local to each customer site.
Typical deployments include:
* Customer branch offices
* Retail stores
* Warehouses
* Small business environments
* Segmented enterprise VLANs
### Network Operations Centers (NOCs)
Create centralized "Eyes on Glass" monitoring dashboards using synchronized remote collectors.
Common NOC setups include:
* [Wallboard dashboards](./ADVISORY_EYES_ON_GLASS.md)
* Dedicated "Down Devices" views
* Site-(node)specific monitoring filters
* [Prometheus/Grafana integrations](./API_METRICS.md)
### Isolated or Restricted Networks
Some environments cannot be scanned directly due to:
* VLAN isolation
* Firewalls
* VPN segmentation
* Layer 2 limitations
* Remote WAN locations
[Sync Nodes](./REMOTE_NETWORKS.md) solve this by running discovery locally and forwarding only inventory and monitoring data to the hub.
---
# Architecture Overview
NetAlertX supports distributed monitoring using two primary roles:
| Role | Purpose |
| -------- | ----------------------------------------------------------- |
| **Hub** | Centralized monitoring, alerting, dashboards, and inventory |
| **Node** | Remote collector performing local network discovery |
Each node scans its local network and synchronizes device data back to the hub.
---
# Sync Modes
NetAlertX supports both PUSH and PULL synchronization models.
| Mode | Description |
| -------- | -------------------------------------------------- |
| **PUSH** | Nodes send inventory data directly to the hub |
| **PULL** | The hub retrieves inventory data from remote nodes |
PUSH mode is typically recommended for MSP deployments because remote customer environments often block inbound access.
---
# Device Ownership Models (`SYNC_BEHAVIOR`) in PULL mode
The hub can operate in different synchronization ownership modes depending on your operational requirements.
| Mode | Best For |
| -------------- | -------------------------------------------------------------------- |
| `copy-new` | MSP environments where the hub becomes the long-term source of truth |
| `carbon-copy` | Fully managed remote appliances where nodes remain authoritative |
| `hub-defaults` | Centralized inventory management with hub-defined policies |
This flexibility allows NetAlertX to support both:
* centrally managed environments
* distributed autonomous sites
---
# Example Deployment
## Multi-Site MSP Deployment
```text
Customer Site A ─┐
Customer Site B ─┼──► Central NetAlertX Hub
Customer Site C ─┘
```
Each customer site runs a lightweight NetAlertX node locally.
The central hub:
* aggregates inventory
* handles alerting
* provides dashboards
* exports metrics
* integrates with Grafana or external systems
---
# Recommended MSP Features
For best results in multi-site environments:
* Configure descriptive `SYNC_node_name` values
* Use Workflows to auto-tag devices by location/site
* Use predefined "Down Devices" dashboards
* Enable Prometheus metrics export
* Use UI Filters to create site-specific views
* Configure notification throttling to reduce alert fatigue
---
# Related Documentation
* [Remote Networks](./REMOTE_NETWORKS.md)
* [Sync Hub Plugin](../front/plugins/sync/README.md)
* [Workflows](./WORKFLOWS.md)
* [Metrics API](./API_METRICS.md)
* [Eyes on Glass / NOC Dashboard](./ADVISORY_EYES_ON_GLASS.md)
---
# Summary
NetAlertX enables lightweight, centralized monitoring across distributed networks without the operational overhead of traditional enterprise monitoring platforms.
By combining distributed Sync Nodes with centralized dashboards, alerting, and workflows, NetAlertX can function as:
* a multi-site monitoring platform
* an MSP inventory dashboard
* a lightweight NOC monitoring solution
* a centralized network visibility platform for segmented environments

View File

@@ -50,6 +50,10 @@ Manage a **single device** by its MAC address. Operations include retrieval, upd
* **POST** `/device/<mac>`
Create or update a device record.
> ⚠️ **Full-replace (PUT) semantics.** Every editable field is written on each call. Any field omitted from the payload is reset to its default (empty string or `0`). This matches how the frontend edit form works — it always sends the complete device state.
>
> To update a **single field** without affecting others, use [`POST /device/<mac>/update-column`](#7-update-a-single-column) instead.
**Request Body**:
```json
@@ -62,8 +66,8 @@ Manage a **single device** by its MAC address. Operations include retrieval, upd
**Behavior**:
* If `createNew=true`creates a new device
* Otherwise → updates existing device fields
* If `createNew=true`inserts a new device row
* Otherwise → **replaces all editable fields** on the existing device
**Response**:
@@ -163,7 +167,13 @@ Manage a **single device** by its MAC address. Operations include retrieval, upd
## 7. Update a Single Column
* **POST** `/device/<mac>/update-column`
Update one specific column for a device.
Update exactly one field for a device without touching any other fields.
> ✅ **Partial-update (PATCH) semantics.** Only the specified column is written. All other fields are left unchanged. Use this for automation, integrations, and any workflow that needs to update a single attribute.
>
> To replace all fields at once (e.g. saving from the edit form), use [`POST /device/<mac>`](#2-update-device-fields).
Allowed `columnName` values: `devName`, `devOwner`, `devType`, `devVendor`, `devGroup`, `devLocation`, `devComments`, `devIcon`, `devFavorite`, `devAlertEvents`, `devAlertDown`, `devCanSleep`, `devSkipRepeated`, `devReqNicsOnline`, `devForceStatus`, `devParentMAC`, `devParentPort`, `devParentRelType`, `devSSID`, `devSite`, `devVlan`, `devStaticIP`, `devIsNew`, `devIsArchived`, `devCustomProps`.
**Request Body**:
@@ -190,6 +200,108 @@ Manage a **single device** by its MAC address. Operations include retrieval, upd
---
## 8. Lock / Unlock a Device Field
* **POST** `/device/<mac>/field/lock`
Lock a field to prevent plugin overwrites, or unlock it to allow overwrites again.
**Request Body**:
```json
{
"fieldName": "devName",
"lock": true
}
```
| Field | Type | Required | Description |
|---|---|---|---|
| `fieldName` | string | ✅ | Field to lock/unlock (e.g. `devName`, `devVendor`) |
| `lock` | boolean | ❌ | `true` to lock, `false` to unlock (default when omitted) |
**Response** (success):
```json
{
"success": true,
"fieldName": "devName",
"locked": true,
"message": "Field devName locked"
}
```
**Error Responses**:
* Field does not support locking → HTTP 400
* Unauthorized → HTTP 403
---
## 9. Unlock / Clear Device Fields (Bulk)
* **POST** `/devices/fields/unlock`
Unlock fields (clear `LOCKED`/`USER` sources) for one device, a list of devices, or all devices.
**Request Body**:
```json
{
"mac": "AA:BB:CC:DD:EE:FF",
"fields": ["devName", "devVendor"],
"clearAll": false
}
```
| Field | Type | Required | Description |
|---|---|---|---|
| `mac` | string or array | ❌ | Single MAC, list of MACs, or omit for all devices |
| `fields` | array of strings | ❌ | Fields to unlock. Omit to unlock all tracked fields |
| `clearAll` | boolean | ❌ | `true` clears all sources; `false` (default) clears only `LOCKED`/`USER` |
**Response** (success):
```json
{
"success": true
}
```
**Error Responses**:
* `fields` is not a list → HTTP 400
* Unauthorized → HTTP 403
---
## 10. Set Device Alias
* **POST** `/device/<mac>/set-alias`
Convenience wrapper to update the device display name (`devName`).
**Request Body**:
```json
{
"alias": "My Router"
}
```
**Response** (success):
```json
{
"success": true
}
```
**Error Responses**:
* Missing `alias` → HTTP 400
* Device not found → HTTP 404
* Unauthorized → HTTP 403
---
## Example `curl` Requests
**Get Device Details**:
@@ -233,3 +345,30 @@ curl -X POST "http://<server_ip>:<GRAPHQL_PORT>/device/AA:BB:CC:DD:EE:FF/update-
--data '{"columnName":"devName","columnValue":"Updated Device"}'
```
**Lock a Field**:
```bash
curl -X POST "http://<server_ip>:<GRAPHQL_PORT>/device/AA:BB:CC:DD:EE:FF/field/lock" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{"fieldName":"devName","lock":true}'
```
**Unlock Fields (all devices)**:
```bash
curl -X POST "http://<server_ip>:<GRAPHQL_PORT>/devices/fields/unlock" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{"fields":["devName","devVendor"]}'
```
**Set Device Alias**:
```bash
curl -X POST "http://<server_ip>:<GRAPHQL_PORT>/device/AA:BB:CC:DD:EE:FF/set-alias" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{"alias":"My Router"}'
```

View File

@@ -58,12 +58,12 @@ The Events API provides access to **device event logs**, allowing creation, retr
"success": true,
"events": [
{
"eve_MAC": "00:11:22:33:44:55",
"eve_IP": "192.168.1.10",
"eve_DateTime": "2025-08-24T12:00:00Z",
"eve_EventType": "Device Down",
"eve_AdditionalInfo": "",
"eve_PendingAlertEmail": 1
"eveMac": "00:11:22:33:44:55",
"eveIp": "192.168.1.10",
"eveDateTime": "2025-08-24T12:00:00Z",
"eveEventType": "Device Down",
"eveAdditionalInfo": "",
"evePendingAlertEmail": 1
}
]
}
@@ -102,11 +102,11 @@ The Events API provides access to **device event logs**, allowing creation, retr
"count": 5,
"events": [
{
"eve_DateTime": "2025-12-07 12:00:00",
"eve_EventType": "New Device",
"eve_MAC": "AA:BB:CC:DD:EE:FF",
"eve_IP": "192.168.1.100",
"eve_AdditionalInfo": "Device detected"
"eveDateTime": "2025-12-07 12:00:00",
"eveEventType": "New Device",
"eveMac": "AA:BB:CC:DD:EE:FF",
"eveIp": "192.168.1.100",
"eveAdditionalInfo": "Device detected"
}
]
}
@@ -127,9 +127,9 @@ The Events API provides access to **device event logs**, allowing creation, retr
"count": 10,
"events": [
{
"eve_DateTime": "2025-12-07 12:00:00",
"eve_EventType": "Device Down",
"eve_MAC": "AA:BB:CC:DD:EE:FF"
"eveDateTime": "2025-12-07 12:00:00",
"eveEventType": "Device Down",
"eveMac": "AA:BB:CC:DD:EE:FF"
}
]
}
@@ -159,9 +159,9 @@ The Events API provides access to **device event logs**, allowing creation, retr
1. Total events in the period
2. Total sessions
3. Missing sessions
4. Voided events (`eve_EventType LIKE 'VOIDED%'`)
5. New device events (`eve_EventType LIKE 'New Device'`)
6. Device down events (`eve_EventType LIKE 'Device Down'`)
4. Voided events (`eveEventType LIKE 'VOIDED%'`)
5. New device events (`eveEventType LIKE 'New Device'`)
6. Device down events (`eveEventType LIKE 'Device Down'`)
---
@@ -187,7 +187,7 @@ Event endpoints are available as **MCP Tools** for AI assistant integration:
```
* Events are stored in the **Events table** with the following fields:
`eve_MAC`, `eve_IP`, `eve_DateTime`, `eve_EventType`, `eve_AdditionalInfo`, `eve_PendingAlertEmail`.
`eveMac`, `eveIp`, `eveDateTime`, `eveEventType`, `eveAdditionalInfo`, `evePendingAlertEmail`.
* Event creation automatically logs activity for debugging.

View File

@@ -4,6 +4,10 @@ GraphQL queries are **read-optimized for speed**. Data may be slightly out of da
* Devices
* Settings
* Events
* PluginsObjects
* PluginsHistory
* PluginsEvents
* Language Strings (LangStrings)
## Endpoints
@@ -254,11 +258,160 @@ curl 'http://host:GRAPHQL_PORT/graphql' \
---
## Plugin Tables (Objects, Events, History)
Three queries expose the plugin database tables with server-side pagination, filtering, and search:
* `pluginsObjects` — current plugin object state
* `pluginsEvents` — unprocessed plugin events
* `pluginsHistory` — historical plugin event log
All three share the same `PluginQueryOptionsInput` and return the same `PluginEntry` shape.
### Sample Query
```graphql
query GetPluginObjects($options: PluginQueryOptionsInput) {
pluginsObjects(options: $options) {
dbCount
count
entries {
index plugin objectPrimaryId objectSecondaryId
dateTimeCreated dateTimeChanged
watchedValue1 watchedValue2 watchedValue3 watchedValue4
status extra userData foreignKey
syncHubNodeName helpVal1 helpVal2 helpVal3 helpVal4 objectGuid
}
}
}
```
### Query Parameters (`PluginQueryOptionsInput`)
| Parameter | Type | Description |
| ------------ | ----------------- | ------------------------------------------------------ |
| `page` | Int | Page number (1-based). |
| `limit` | Int | Rows per page (max 1000). |
| `sort` | [SortOptionsInput] | Sorting options (`field`, `order`). |
| `search` | String | Free-text search across key columns. |
| `filters` | [FilterOptionsInput] | Column-value exact-match filters. |
| `plugin` | String | Plugin prefix to scope results (e.g. `"ARPSCAN"`). |
| `foreignKey` | String | Foreign key filter (e.g. device MAC). |
| `dateFrom` | String | Start of date range filter on `dateTimeCreated`. |
| `dateTo` | String | End of date range filter on `dateTimeCreated`. |
### Response Fields
| Field | Type | Description |
| --------- | ------------- | ------------------------------------------------------------- |
| `dbCount` | Int | Total rows for the requested plugin (before search/filters). |
| `count` | Int | Total rows after all filters (before pagination). |
| `entries` | [PluginEntry] | Paginated list of plugin entries. |
### `curl` Example
```sh
curl 'http://host:GRAPHQL_PORT/graphql' \
-X POST \
-H 'Authorization: Bearer API_TOKEN' \
-H 'Content-Type: application/json' \
--data '{
"query": "query GetPluginObjects($options: PluginQueryOptionsInput) { pluginsObjects(options: $options) { dbCount count entries { index plugin objectPrimaryId status foreignKey } } }",
"variables": {
"options": {
"plugin": "ARPSCAN",
"page": 1,
"limit": 25
}
}
}'
```
### Badge Prefetch (Batched Counts)
Use GraphQL aliases to fetch counts for all plugins in a single request:
```graphql
query BadgeCounts {
ARPSCAN: pluginsObjects(options: {plugin: "ARPSCAN", page: 1, limit: 1}) { dbCount }
INTRNT: pluginsObjects(options: {plugin: "INTRNT", page: 1, limit: 1}) { dbCount }
}
```
---
## Events Query
Access the Events table with server-side pagination, filtering, and search.
### Sample Query
```graphql
query GetEvents($options: EventQueryOptionsInput) {
events(options: $options) {
dbCount
count
entries {
eveMac
eveIp
eveDateTime
eveEventType
eveAdditionalInfo
evePendingAlertEmail
}
}
}
```
### Query Parameters (`EventQueryOptionsInput`)
| Parameter | Type | Description |
| ----------- | ------------------ | ------------------------------------------------ |
| `page` | Int | Page number (1-based). |
| `limit` | Int | Rows per page (max 1000). |
| `sort` | [SortOptionsInput] | Sorting options (`field`, `order`). |
| `search` | String | Free-text search across key columns. |
| `filters` | [FilterOptionsInput] | Column-value exact-match filters. |
| `eveMac` | String | Filter by device MAC address. |
| `eventType` | String | Filter by event type (e.g. `"New Device"`). |
| `dateFrom` | String | Start of date range filter on `eveDateTime`. |
| `dateTo` | String | End of date range filter on `eveDateTime`. |
### Response Fields
| Field | Type | Description |
| --------- | ------------ | ------------------------------------------------------------ |
| `dbCount` | Int | Total rows in the Events table (before any filters). |
| `count` | Int | Total rows after all filters (before pagination). |
| `entries` | [EventEntry] | Paginated list of event entries. |
### `curl` Example
```sh
curl 'http://host:GRAPHQL_PORT/graphql' \
-X POST \
-H 'Authorization: Bearer API_TOKEN' \
-H 'Content-Type: application/json' \
--data '{
"query": "query GetEvents($options: EventQueryOptionsInput) { events(options: $options) { dbCount count entries { eveMac eveIp eveDateTime eveEventType } } }",
"variables": {
"options": {
"eveMac": "00:11:22:33:44:55",
"page": 1,
"limit": 50
}
}
}'
```
---
## Notes
* Device, settings, and LangStrings queries can be combined in **one request** since GraphQL supports batching.
* Device, settings, LangStrings, plugin, and event queries can be combined in **one request** since GraphQL supports batching.
* The `fallback_to_en` feature ensures UI always has a value even if a translation is missing.
* Data is **cached in memory** per JSON file; changes to language or plugin files will only refresh after the cache detects a file modification.
* The `setOverriddenByEnv` flag helps identify setting values that are locked at container runtime.
* The schema is **read-only** — updates must be performed through other APIs or configuration management. See the other [API](API.md) endpoints for details.
* Plugin queries scope `dbCount` to the requested `plugin`/`foreignKey` so badge counts reflect per-plugin totals.
* The schema is **read-only** — updates must be performed through other APIs or configuration management. See the other [API](API.md) endpoints for details.

View File

@@ -106,12 +106,12 @@ curl -X DELETE "http://<server_ip>:<GRAPHQL_PORT>/sessions/delete" \
"success": true,
"sessions": [
{
"ses_MAC": "AA:BB:CC:DD:EE:FF",
"ses_Connection": "2025-08-01 10:00",
"ses_Disconnection": "2025-08-01 12:00",
"ses_Duration": "2h 0m",
"ses_IP": "192.168.1.10",
"ses_Info": ""
"sesMac": "AA:BB:CC:DD:EE:FF",
"sesDateTimeConnection": "2025-08-01 10:00",
"sesDateTimeDisconnection": "2025-08-01 12:00",
"sesDuration": "2h 0m",
"sesIp": "192.168.1.10",
"sesAdditionalInfo": ""
}
]
}
@@ -194,12 +194,12 @@ curl -X GET "http://<server_ip>:<GRAPHQL_PORT>/sessions/calendar?start=2025-08-0
"success": true,
"sessions": [
{
"ses_MAC": "AA:BB:CC:DD:EE:FF",
"ses_Connection": "2025-08-01 10:00",
"ses_Disconnection": "2025-08-01 12:00",
"ses_Duration": "2h 0m",
"ses_IP": "192.168.1.10",
"ses_Info": ""
"sesMac": "AA:BB:CC:DD:EE:FF",
"sesDateTimeConnection": "2025-08-01 10:00",
"sesDateTimeDisconnection": "2025-08-01 12:00",
"sesDuration": "2h 0m",
"sesIp": "192.168.1.10",
"sesAdditionalInfo": ""
}
]
}
@@ -224,15 +224,33 @@ curl -X GET "http://<server_ip>:<GRAPHQL_PORT>/sessions/AA:BB:CC:DD:EE:FF?period
* `type` → Event type (`all`, `sessions`, `missing`, `voided`, `new`, `down`)
Default: `all`
* `period` → Period to retrieve events (`7 days`, `1 month`, etc.)
* `page` → Page number, 1-based (default: `1`)
* `limit` → Rows per page, max 1000 (default: `100`)
* `search` → Free-text search filter across all columns
* `sortCol` → Column index to sort by, 0-based (default: `0`)
* `sortDir` → Sort direction: `asc` or `desc` (default: `desc`)
**Example:**
```
/sessions/session-events?type=all&period=7 days
/sessions/session-events?type=all&period=7 days&page=1&limit=25&sortCol=3&sortDir=desc
```
**Response:**
Returns a list of events or sessions with formatted connection, disconnection, duration, and IP information.
```json
{
"data": [...],
"total": 150,
"recordsFiltered": 150
}
```
| Field | Type | Description |
| ----------------- | ---- | ------------------------------------------------- |
| `data` | list | Paginated rows (each row is a list of values). |
| `total` | int | Total rows before search filter. |
| `recordsFiltered` | int | Total rows after search filter (before paging). |
#### `curl` Example

View File

@@ -1,4 +1,4 @@
# Sync API Endpoint
# Sync API Endpoint
---
@@ -35,7 +35,7 @@ curl 'http://<server>:<GRAPHQL_PORT>/sync' \
---
#### 9.2 POST `/sync`
#### 9.2 POST `/sync`
The **POST** endpoint is used by nodes to **send data to the hub**. The hub expects the data as **form-encoded fields** (application/x-www-form-urlencoded or multipart/form-data). The hub then stores the data in the plugin log folder for processing.
@@ -91,7 +91,7 @@ curl -X POST 'http://<hub>:<PORT>/sync' \
* The `data` field contains JSON with a **`data` array**, where each element is a **device object** or **plugin data object**.
* The `plugin` and `node_name` fields allow the hub to **organize and store the file correctly**.
* The data is only processed if the relevant plugins are enabled and run on the target server.
* The data is only processed if the relevant plugins are enabled and run on the target server.
---
@@ -112,7 +112,7 @@ last_result.<plugin>.encoded.<node_name>.<sequence>.log
* Both encoded and decoded files are tracked, and new submissions increment the sequence number.
* If storing fails, the API returns HTTP 500 with an error message.
* The data is only processed if the relevant plugins are enabled and run on the target server.
* The data is only processed if the relevant plugins are enabled and run on the target server.
---
@@ -120,6 +120,20 @@ last_result.<plugin>.encoded.<node_name>.<sequence>.log
* **Authorization Required** Both GET and POST require a valid API token.
* **Data Integrity** Ensure that `node_name` and `plugin` are consistent to avoid overwriting files.
* **Monitoring** Notifications are generated whenever data is sent or received (`write_notification`), which can be used for alerting or auditing.
* **Monitoring** An in-app log entry is written via `write_notification` whenever data is sent or received, which can be used for auditing.
* **Use Case** Typically used in multi-node deployments to consolidate device and event data on a central hub.
---
#### 9.4 Hub Device-Write Behavior (`SYNC_BEHAVIOR`)
The `SYNC_BEHAVIOR` setting controls how the hub writes devices received from nodes (Mode 3 — RECEIVE). It only affects the hub.
| Value | Default? | Writes to Devices |
|---|---|---|
| `copy-new` | ✅ | New MACs only (INSERT OR IGNORE) |
| `carbon-copy` | | All MACs every sync (UPSERT) |
| `hub-defaults` | | None — hub pipeline handles it |
For full details and per-mode behaviour, see [SYNC plugin README — Hub Device-Write Behavior](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/sync/README.md#hub-device-write-behavior-sync_behavior).

View File

@@ -43,7 +43,7 @@ Input data from the plugin might cause mapping issues in specific edge cases. Lo
17:31:05 [Scheduler] run for PIHOLE: YES
17:31:05 [Plugin utils] ---------------------------------------------
17:31:05 [Plugin utils] display_name: PiHole (Device sync)
17:31:05 [Plugins] CMD: SELECT n.hwaddr AS Object_PrimaryID, {s-quote}null{s-quote} AS Object_SecondaryID, datetime() AS DateTime, na.ip AS Watched_Value1, n.lastQuery AS Watched_Value2, na.name AS Watched_Value3, n.macVendor AS Watched_Value4, {s-quote}null{s-quote} AS Extra, n.hwaddr AS ForeignKey FROM EXTERNAL_PIHOLE.Network AS n LEFT JOIN EXTERNAL_PIHOLE.Network_Addresses AS na ON na.network_id = n.id WHERE n.hwaddr NOT LIKE {s-quote}ip-%{s-quote} AND n.hwaddr is not {s-quote}00:00:00:00:00:00{s-quote} AND na.ip is not null
17:31:05 [Plugins] CMD: SELECT n.hwaddr AS objectPrimaryId, {s-quote}null{s-quote} AS objectSecondaryId, datetime() AS DateTime, na.ip AS watchedValue1, n.lastQuery AS watchedValue2, na.name AS watchedValue3, n.macVendor AS watchedValue4, {s-quote}null{s-quote} AS Extra, n.hwaddr AS ForeignKey FROM EXTERNAL_PIHOLE.Network AS n LEFT JOIN EXTERNAL_PIHOLE.Network_Addresses AS na ON na.network_id = n.id WHERE n.hwaddr NOT LIKE {s-quote}ip-%{s-quote} AND n.hwaddr is not {s-quote}00:00:00:00:00:00{s-quote} AND na.ip is not null
17:31:05 [Plugins] setTyp: subnets
17:31:05 [Plugin utils] Flattening the below array
17:31:05 ['192.168.1.0/24 --interface=eth1']
@@ -52,7 +52,7 @@ Input data from the plugin might cause mapping issues in specific edge cases. Lo
17:31:05 [Plugins] Convert to Base64: True
17:31:05 [Plugins] base64 value: b'MTkyLjE2OC4xLjAvMjQgLS1pbnRlcmZhY2U9ZXRoMQ=='
17:31:05 [Plugins] Timeout: 10
17:31:05 [Plugins] Executing: SELECT n.hwaddr AS Object_PrimaryID, 'null' AS Object_SecondaryID, datetime() AS DateTime, na.ip AS Watched_Value1, n.lastQuery AS Watched_Value2, na.name AS Watched_Value3, n.macVendor AS Watched_Value4, 'null' AS Extra, n.hwaddr AS ForeignKey FROM EXTERNAL_PIHOLE.Network AS n LEFT JOIN EXTERNAL_PIHOLE.Network_Addresses AS na ON na.network_id = n.id WHERE n.hwaddr NOT LIKE 'ip-%' AND n.hwaddr is not '00:00:00:00:00:00' AND na.ip is not null
17:31:05 [Plugins] Executing: SELECT n.hwaddr AS objectPrimaryId, 'null' AS objectSecondaryId, datetime() AS DateTime, na.ip AS watchedValue1, n.lastQuery AS watchedValue2, na.name AS watchedValue3, n.macVendor AS watchedValue4, 'null' AS Extra, n.hwaddr AS ForeignKey FROM EXTERNAL_PIHOLE.Network AS n LEFT JOIN EXTERNAL_PIHOLE.Network_Addresses AS na ON na.network_id = n.id WHERE n.hwaddr NOT LIKE 'ip-%' AND n.hwaddr is not '00:00:00:00:00:00' AND na.ip is not null
🔻
17:31:05 [Plugins] SUCCESS, received 2 entries
17:31:05 [Plugins] sqlParam entries: [(0, 'PIHOLE', '01:01:01:01:01:01', 'null', 'null', '2023-12-25 06:31:05', '172.30.0.1', 0, 'aaaa', 'vvvvvvvvv', 'not-processed', 'null', 'null', '01:01:01:01:01:01'), (0, 'PIHOLE', '02:42:ac:1e:00:02', 'null', 'null', '2023-12-25 06:31:05', '172.30.0.2', 0, 'dddd', 'vvvvv2222', 'not-processed', 'null', 'null', '02:42:ac:1e:00:02')]

View File

@@ -1,5 +1,7 @@
# Quick Reference Guide - Device Field Lock/Unlock System
> For how scan overwrite rules (`SET_ALWAYS`, `SET_EMPTY`) and source tracking work under the hood, see [Device Source Fields](./DEVICE_SOURCE_FIELDS.md).
## Overview
![Field source and locks](./img/DEVICE_MANAGEMENT/field_sources_and_locks.png)

159
docs/DEVICE_FILTERS.md Normal file
View File

@@ -0,0 +1,159 @@
## Device List & Display Configuration
The **Devices** page is your primary view into what NetAlertX is monitoring. If devices are missing, unexpected devices appear, or the list doesnt look the way you expect, the issue is often related to **filters**, **display settings**, or **device visibility configuration**.
This guide focuses on adjusting your view and troubleshooting common display-related issues.
---
## I Dont See a Device I Expect in *My Devices*
If a device is missing from the **My Devices** list, work through these checks.
### Check Active Filters
The most common cause is that a filter is hiding the device.
![Image](https://docs.netalertx.com/img/ADVISORIES/filters.png)
![Image](https://docs.netalertx.com/img/DEVICE_MANAGEMENT/DeviceDetails_DisplaySettings.png)
Review any active:
* **Status filters** (Online / Offline / Down / Archived)
* **Location** filters
* **Owner / User** filters
* **Device Type** filters
* Search terms entered in the search box
Clear filters first, then reload the page and check again.
### Check global filters
You can select devices of what statuses should be displayed in the My Devices view. This can be adjusted in the _Settings_ section - search for the `UI_MY_DEVICES` setting and verify that the statuses you want to show are selected.
---
### Check Whether the Device Is Hidden
Some devices may be excluded from normal views depending on configuration.
Examples include:
* Archived devices
* Devices marked as ignored (`NEWDEV_ignored_IPs` and `NEWDEV_ignored_MACs` settings)
* Virtual or relationship-only devices excluded from display (setting `UI_hide_rel_types`)
* Devices assigned to another user view or group
If the device exists in the database but is intentionally hidden, it may not appear in default lists.
---
### Confirm the Device Has Been Detected
If the device has never been scanned or synced into NetAlertX yet, it wont appear in the UI.
Things to check:
* Is the device currently online?
* Has the network scan already run?
* Is the correct scan source enabled?
* If using sync/import, has the sync node completed successfully?
You can also trigger a manual scan and refresh the UI afterward.
---
### Refresh the UI Cache
Sometimes device data updates correctly in the backend but the browser view hasnt refreshed yet.
Try:
* Clicking the **Reload** icon in the NetAlertX header
* Waiting for the next automatic refresh cycle
* Performing a hard browser refresh (`Ctrl+Shift+R` / `Cmd+Shift+R`)
The built-in **Reload** action is recommended over browser refresh because it clears the applications internal cache, otherwise cache refresh might take a couple of minutes.
---
## Filtering Your Device View
Filters help narrow large device inventories into manageable views.
Common filtering options include:
| Filter | Use Case |
| --------------- | ----------------------------------------------------------- |
| **Status** | Show only Online, Offline, Down, New, or Archived devices |
| **Location** | View devices from a specific site or branch |
| **Device Type** | Show only servers, network gear, clients, IoT devices, etc. |
| **Owner/User** | Limit results to a specific user or device owner |
| **Search** | Find devices by hostname, IP address, MAC address, or label |
Filters can be combined, which is especially useful for large installations.
Example:
`Status = Down` + `Location = Sydney Office`
This shows only devices currently down at that site. Available filters can be configured via the `UI_columns_filters` setting.
---
## Related Display Settings
Several UI settings affect what appears in the device list.
### Hidden Connections / Virtual Devices
You can hide non-essential relationships or virtual connections from the main view to reduce clutter.
Useful when:
* imported relationships create visual noise
* virtual devices arent relevant to daily monitoring
* you want a cleaner operational view
See the `UI_hide_rel_types` setting for details.
---
### Dashboard Block Visibility
If youre using the dashboard alongside **Devices**, UI Settings allow you to disable blocks that arent useful for your workflow.
Common examples:
* Tiles
* Presence widgets
* Summary cards
* Relationship views
This can make the device list easier to focus on.
To configure the above check the `UI_shown_cards`, `UI_DEV_SECTIONS` and `UI_hide_empty` settings.
---
### Auto Refresh
If devices appear stale or statuses dont update immediately, check **UI refresh settings** (`UI_REFRESH` setting).
A refresh interval between **60120 seconds** is usually a good balance between responsiveness and browser performance.
---
## Quick Troubleshooting Checklist
Before digging deeper, run through this list:
* [ ] Clear all active filters
* [ ] Search by hostname, MAC address, or IP
* [ ] Confirm the device is not archived or hidden
* [ ] Trigger or verify a recent network scan
* [ ] Use the NetAlertX **Reload** icon to refresh the UI cache
* [ ] Check related UI visibility settings
If the device still doesnt appear after these checks, review the scan/import logs to confirm it has been discovered successfully by NetAlertX.

View File

@@ -1,5 +1,7 @@
# Understanding Device Source Fields and Field Updates
> For the UI guide on locking and unlocking individual fields, see [Device Field Lock/Unlock](./DEVICE_FIELD_LOCK.md).
When the system scans a network, it finds various details about devices (like names, IP addresses, and manufacturers). To ensure the data remains accurate without accidentally overwriting manual changes, the system uses a set of "Source Rules."
![Field source and locks](./img/DEVICE_MANAGEMENT/field_sources_and_locks.png)
@@ -17,6 +19,8 @@ Every piece of information for a device has a **Source**. This source determines
| **NEWDEV** | This value was initialized from `NEWDEV` plugin settings. | **Always** |
| **(Plugin Name)** | The value was found by a specific scanner (e.g., `NBTSCAN`). | **Only if specific rules are met** |
> For how `USER` and `LOCKED` sources are set through the UI (lock/unlock buttons), see [Device Field Lock/Unlock](./DEVICE_FIELD_LOCK.md).
---
## How Scans Update Information
@@ -34,6 +38,8 @@ Some plugins are configured to be "authoritative." If a field is in the **SET_AL
* The scanner will **always** overwrite the current value with the new one.
* *Note: It will still never overwrite a `USER` or `LOCKED` field.*
> On large networks, enabling `SET_ALWAYS` on name-resolution fields (e.g., `devName`) widens the resolution scope and increases DNS query volume. See [Performance — Plugin Field Authority](./PERFORMANCE.md#plugin-field-authority-set_always-and-set_empty) for details.
### 3. SET_EMPTY
If a field is in the **SET_EMPTY** list:

View File

@@ -36,7 +36,7 @@ docker run -d --rm --network=host \
> Runtime UID/GID: The image defaults to a service user `netalertx` (UID/GID 20211). A separate readonly lock owner also uses UID/GID 20211 for 004/005 immutability. You can override the runtime UID/GID at build (ARG) or run (`--user` / compose `user:`) but must align writable mounts (`/data`, `/tmp*`) and tmpfs `uid/gid` to that choice.
See alternative [docked-compose examples](https://docs.netalertx.com/DOCKER_COMPOSE).
See alternative [docker-compose examples](https://docs.netalertx.com/DOCKER_COMPOSE).
### Default ports

View File

@@ -36,7 +36,7 @@ The following device properties influence notifications. You can:
On almost all plugins there are 2 core settings, `<plugin>_WATCH` and `<plugin>_REPORT_ON`.
1. `<plugin>_WATCH` specifies the columns which the app should watch. If watched columns change the device state is considered changed. This changed status is then used to decide to send out notifications based on the `<plugin>_REPORT_ON` setting.
2. `<plugin>_REPORT_ON` let's you specify on which events the app should notify you. This is related to the `<plugin>_WATCH` setting. So if you select `watched-changed` and in `<plugin>_WATCH` you only select `Watched_Value1`, then a notification is triggered if `Watched_Value1` is changed from the previous value, but no notification is send if `Watched_Value2` changes.
2. `<plugin>_REPORT_ON` let's you specify on which events the app should notify you. This is related to the `<plugin>_WATCH` setting. So if you select `watched-changed` and in `<plugin>_WATCH` you only select `watchedValue1`, then a notification is triggered if `watchedValue1` is changed from the previous value, but no notification is send if `watchedValue2` changes.
Click the **Read more in the docs.** Link at the top of each plugin to get more details on how the given plugin works.
@@ -63,5 +63,3 @@ You can completely ignore detected devices globally. This could be because your
1. Ignored MACs (`NEWDEV_ignored_MACs`) - List of MACs to ignore.
2. Ignored IPs (`NEWDEV_ignored_IPs`) - List of IPs to ignore.

View File

@@ -10,22 +10,23 @@ HTML email tables are **not affected** by these templates.
1. Go to **Settings → Notification Processing**.
2. Set a template string for the section you want to customize, e.g.:
- **Text Template: New Devices** → `{Device name} ({MAC}) - {IP}`
- **Text Template: New Devices** → `{devName} ({eveMac}) - {eveIp}`
3. Save. The next notification will use your format.
**Before (default):**
```
🆕 New devices
---------
MAC: aa:bb:cc:dd:ee:ff
Datetime: 2025-01-15 10:30:00
IP: 192.168.1.42
Event Type: New Device
Device name: MyPhone
Comments:
devName: MyPhone
eveMac: aa:bb:cc:dd:ee:ff
devVendor: Apple
eveIp: 192.168.1.42
eveDateTime: 2025-01-15 10:30:00
eveEventType: New Device
devComments:
```
**After (with template `{Device name} ({MAC}) - {IP}`):**
**After (with template `{devName} ({eveMac}) - {eveIp}`):**
```
🆕 New devices
---------
@@ -50,7 +51,7 @@ When a template is **empty**, the section uses the original vertical `Header: Va
Use `{FieldName}` to insert a value from the notification data. Field names are **case-sensitive** and must match the column names exactly.
```
{Device name} ({MAC}) connected at {Datetime}
{devName} ({eveMac}) connected at {eveDateTime}
```
- No loops, conditionals, or nesting — just simple string replacement.
@@ -58,52 +59,41 @@ Use `{FieldName}` to insert a value from the notification data. Field names are
## Variable Availability by Section
Each section has different available fields because they come from different database queries.
All four device sections (`new_devices`, `down_devices`, `down_reconnected`, `events`) share the same unified field names.
### `new_devices` and `events`
| Variable | Description |
|----------|-------------|
| `{MAC}` | Device MAC address |
| `{Datetime}` | Event timestamp |
| `{IP}` | Device IP address |
| `{Event Type}` | Type of event (e.g. `New Device`, `Connected`) |
| `{Device name}` | Device display name |
| `{Comments}` | Device comments |
**Example:** `{Device name} ({MAC}) - {IP} [{Event Type}]`
### `down_devices` and `down_reconnected`
### `new_devices`, `down_devices`, `down_reconnected`, and `events`
| Variable | Description |
|----------|-------------|
| `{devName}` | Device display name |
| `{eve_MAC}` | Device MAC address |
| `{eveMac}` | Device MAC address |
| `{devVendor}` | Device vendor/manufacturer |
| `{eve_IP}` | Device IP address |
| `{eve_DateTime}` | Event timestamp |
| `{eve_EventType}` | Type of event |
| `{eveIp}` | Device IP address |
| `{eveDateTime}` | Event timestamp |
| `{eveEventType}` | Type of event (e.g. `New Device`, `Connected`, `Device Down`) |
| `{devComments}` | Device comments |
**Example:** `{devName} ({eve_MAC}) {devVendor} - went down at {eve_DateTime}`
**Example (new_devices/events):** `{devName} ({eveMac}) - {eveIp} [{eveEventType}]`
**Example (down_devices):** `{devName} ({eveMac}) {devVendor} - went down at {eveDateTime}`
**Example (down_reconnected):** `{devName} ({eveMac}) reconnected at {eveDateTime}`
### `plugins`
| Variable | Description |
|----------|-------------|
| `{Plugin}` | Plugin code name |
| `{Object_PrimaryId}` | Primary identifier of the object |
| `{Object_SecondaryId}` | Secondary identifier |
| `{DateTimeChanged}` | Timestamp of change |
| `{Watched_Value1}` | First watched value |
| `{Watched_Value2}` | Second watched value |
| `{Watched_Value3}` | Third watched value |
| `{Watched_Value4}` | Fourth watched value |
| `{Status}` | Plugin event status |
| `{plugin}` | Plugin code name |
| `{objectPrimaryId}` | Primary identifier of the object |
| `{objectSecondaryId}` | Secondary identifier |
| `{dateTimeChanged}` | Timestamp of change |
| `{watchedValue1}` | First watched value |
| `{watchedValue2}` | Second watched value |
| `{watchedValue3}` | Third watched value |
| `{watchedValue4}` | Fourth watched value |
| `{status}` | Plugin event status |
**Example:** `{Plugin}: {Object_PrimaryId} - {Status}`
> [!NOTE]
> Field names differ between sections because they come from different SQL queries. A template configured for `new_devices` cannot use `{devName}` — that field is only available in `down_devices` and `down_reconnected`.
**Example:** `{plugin}: {objectPrimaryId} - {status}`
## Section Headers Toggle

View File

@@ -87,6 +87,7 @@ Frequent scans increase resource usage, network traffic, and database read/write
* **Increase scan intervals** (`<PLUGIN>_RUN_SCHD`) on busy networks or low-end hardware.
* **Increase timeouts** (`<PLUGIN>_RUN_TIMEOUT`) to avoid plugin failures.
* **Reduce subnet size** e.g., use `/24` instead of `/16` to reduce scan load.
* **Enable the deep sleep setting** (`DEEP_SLEEP`) Lowers CPU usage by extending idle wait times between processing cycles. When enabled, scans may be delayed by up to 1 minute and the UI might become less responsive.
Some plugins also include options to limit which devices are scanned. If certain plugins consistently run long, consider narrowing their scope.
@@ -94,6 +95,41 @@ For example, the **ICMP plugin** allows scanning only IPs that match a specific
---
## Plugin Field Authority: `SET_ALWAYS` and `SET_EMPTY`
Plugins can be configured to control how aggressively they overwrite existing device field values via two settings:
| Setting | Behaviour |
|---|---|
| `<PLUGIN>_SET_ALWAYS` | Plugin always overwrites the field, as long as it can resolve a value and the field is not `USER`/`LOCKED` |
| `<PLUGIN>_SET_EMPTY` | Plugin only writes when the field is currently empty |
Both settings accept a list of field names (e.g., `devName`, `devFQDN`). See [Name resolution](./NAME_RESOLUTION.md) and [Field locking](./DEVICE_SOURCE_FIELDS.md) docs for details.
### Performance Impact of `SET_ALWAYS` on Name Resolution
By default, name resolution (DIGSCAN, NBTSCAN, NSLOOKUP, AVAHISCAN) only runs against **devices that have no name yet**. This keeps DNS query volume proportional to new devices discovered, not the total inventory.
When **any** name-resolution plugin has `devName` in its `SET_ALWAYS` list, the system additionally runs a second resolution pass against **all devices whose name is not `USER`/`LOCKED` protected**. This allows a higher-priority plugin (e.g., DIGSCAN) to overwrite names previously set by a lower-priority one (e.g., NBTSCAN).
**Cost:** one DNS query per unprotected, already-named device per name-resolution cycle.
| Scenario | Devices resolved per cycle |
|---|---|
| No `SET_ALWAYS` on `devName` | Only new/unknown devices |
| `SET_ALWAYS: devName` on any plugin | New/unknown devices **+** all unprotected named devices |
> [!WARNING]
> On large installations (thousands of devices), enabling `SET_ALWAYS: devName` significantly increases DNS query volume and cycle duration. To mitigate:
>
> * Increase the scan interval of name-resolution plugins (`DIGSCAN_RUN_SCHD`, `NBTSCAN_RUN_SCHD`, etc.).
> * Mark devices whose name should never change as `USER` or `LOCKED` — they are excluded from the re-resolve pass entirely.
> * Use `SET_ALWAYS` only on the highest-priority plugin; leave lower-priority plugins without it.
The actual number of DB rows updated is logged at `verbose` level under `[Update Device Name] SET_ALWAYS re-resolve - DB rows updated`.
---
## Storing Temporary Files in Memory
On devices with slower I/O, you can improve performance by storing temporary files (and optionally the database) in memory using `tmpfs`.

View File

@@ -57,10 +57,12 @@ Device-detecting plugins insert values into the `CurrentScan` database table. T
| `DHCPSRVS` | [dhcp_servers](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/dhcp_servers/) | ♻ | DHCP servers | | |
| `DIGSCAN` | [dig_scan](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/dig_scan/) | 🆎 | Dig (DNS) Name resolution | | |
| `FREEBOX` | [freebox](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/freebox/) | 🔍/♻/🆎 | Pull data and names from Freebox/Iliadbox | | |
| `FRITZBOX` | [fritzbox](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/fritzbox/) | 🔍 | Fritz!Box device scanner via TR-064 | | |
| `ICMP` | [icmp_scan](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/icmp_scan/) | ♻ | ICMP (ping) status checker | | |
| `INTRNT` | [internet_ip](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/internet_ip/) | 🔍 | Internet IP scanner | | |
| `INTRSPD` | [internet_speedtest](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/internet_speedtest/) | ♻ | Internet speed test | | |
| `IPNEIGH` | [ipneigh](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/ipneigh/) | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | |
| `KEALSS` | [kea_api](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/kea_api/) | 🔍/🆎 | Pull lease data from the Kea DHCP API | | |
| `LUCIRPC` | [luci_import](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/luci_import/) | 🔍 | Import connected devices from OpenWRT | | |
| `MAINT` | [maintenance](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/maintenance/) | ⚙ | Maintenance of logs, etc. | | |
| `MQTT` | [_publisher_mqtt](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/_publisher_mqtt/) | ▶️ | MQTT for synching to Home Assistant | | |

View File

@@ -179,13 +179,13 @@ Quick reference:
| Column | Name | Required | Example |
|--------|------|----------|---------|
| 0 | Object_PrimaryID | **YES** | `"device_name"` or `"192.168.1.1"` |
| 1 | Object_SecondaryID | no | `"secondary_id"` or `null` |
| 0 | objectPrimaryId | **YES** | `"device_name"` or `"192.168.1.1"` |
| 1 | objectSecondaryId | no | `"secondary_id"` or `null` |
| 2 | DateTime | **YES** | `"2023-01-02 15:56:30"` |
| 3 | Watched_Value1 | **YES** | `"online"` or `"200"` |
| 4 | Watched_Value2 | no | `"ip_address"` or `null` |
| 5 | Watched_Value3 | no | `null` |
| 6 | Watched_Value4 | no | `null` |
| 3 | watchedValue1 | **YES** | `"online"` or `"200"` |
| 4 | watchedValue2 | no | `"ip_address"` or `null` |
| 5 | watchedValue3 | no | `null` |
| 6 | watchedValue4 | no | `null` |
| 7 | Extra | no | `"additional data"` or `null` |
| 8 | ForeignKey | no | `"aa:bb:cc:dd:ee:ff"` or `null` |
@@ -243,7 +243,7 @@ Control which rows display in the UI:
{
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -267,7 +267,7 @@ To import plugin data into NetAlertX tables for device discovery or notification
"mapped_to_table": "CurrentScan",
"database_column_definitions": [
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "scanMac",
"show": true,
"type": "device_mac",
@@ -302,50 +302,13 @@ Plugin results are displayed in the web interface using various component types.
### Common Display Types
**Read settings in your Python script:**
```python
from helper import get_setting_value
# Read a setting by code name (prefix + function)
api_url = get_setting_value('MYPLN_API_URL')
api_key = get_setting_value('MYPLN_API_KEY')
watch_columns = get_setting_value('MYPLN_WATCH')
print(f"Connecting to {api_url}")
```
**Pass settings as command parameters:**
Define `params` in config to pass settings as script arguments:
```json
{
"params": [
{
"name": "api_url",
"type": "setting",
"value": "MYPLN_API_URL"
}
]
}
```
Then use in `CMD`: `python3 script.py --url={api_url}`
See [PLUGINS_DEV_SETTINGS.md](PLUGINS_DEV_SETTINGS.md) for complete settings documentation, and [PLUGINS_DEV_DATASOURCES.md](PLUGINS_DEV_DATASOURCES.md) for data source details.
[screen1]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins.png "Screen 1"
[screen2]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_settings.png "Screen 2"
[screen3]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_json_settings.png "Screen 3"
[screen4]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_json_ui.png "Screen 4"
[screen5]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_device_details.png "Screen 5"
## Quick Reference: Key Concepts
### Plugin Output Format
```
Object_PrimaryID|Object_SecondaryID|DateTime|Watched_Value1|Watched_Value2|Watched_Value3|Watched_Value4|Extra|ForeignKey
objectPrimaryId|objectSecondaryId|DateTime|watchedValue1|watchedValue2|watchedValue3|watchedValue4|Extra|ForeignKey
```
9 required columns, 4 optional helpers = 13 max
@@ -394,3 +357,8 @@ See: [UI Components](PLUGINS_DEV_UI_COMPONENTS.md)
---
[screen1]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins.png "Screen 1"
[screen2]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_settings.png "Screen 2"
[screen3]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_json_settings.png "Screen 3"
[screen4]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_json_ui.png "Screen 4"
[screen5]: https://raw.githubusercontent.com/jokob-sk/NetAlertX/main/docs/img/plugins_device_details.png "Screen 5"

View File

@@ -77,7 +77,7 @@ It also describes plugin output expectations and the main plugin categories.
* `database_column_definitions`
* `mapped_to_table`
**Example:** `Object_PrimaryID → devMAC`
**Example:** `objectPrimaryId → devMAC`
---
@@ -88,9 +88,9 @@ Output values are pipe-delimited in a fixed order.
#### Identifiers
* `Object_PrimaryID` and `Object_SecondaryID` uniquely identify records (for example, `MAC|IP`).
* `objectPrimaryId` and `objectSecondaryId` uniquely identify records (for example, `MAC|IP`).
#### Watched Values (`Watched_Value14`)
#### Watched Values (`watchedValue14`)
* Used by the core to detect changes between runs.
* Changes in these fields can trigger notifications.
@@ -114,7 +114,7 @@ Output values are pipe-delimited in a fixed order.
### 7. Persistence
* Parsed data is **upserted** into the database.
* Conflicts are resolved using the combined key: `Object_PrimaryID + Object_SecondaryID`.
* Conflicts are resolved using the combined key: `objectPrimaryId + objectSecondaryId`.
---

View File

@@ -107,7 +107,7 @@ Query the NetAlertX SQLite database and display results.
{
"function": "CMD",
"type": {"dataType": "string", "elements": [{"elementType": "input", "elementOptions": [], "transformers": []}]},
"default_value": "SELECT dv.devName as Object_PrimaryID, cast(dv.devLastIP as VARCHAR(100)) || ':' || cast(SUBSTR(ns.Port, 0, INSTR(ns.Port, '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, ns.Service as Watched_Value1, ns.State as Watched_Value2, null as Watched_Value3, null as Watched_Value4, ns.Extra as Extra, dv.devMac as ForeignKey FROM (SELECT * FROM Nmap_Scan) ns LEFT JOIN (SELECT devName, devMac, devLastIP FROM Devices) dv ON ns.MAC = dv.devMac",
"default_value": "SELECT dv.devName as objectPrimaryId, cast(dv.devLastIP as VARCHAR(100)) || ':' || cast(SUBSTR(ns.Port, 0, INSTR(ns.Port, '/')) as VARCHAR(100)) as objectSecondaryId, datetime() as DateTime, ns.Service as watchedValue1, ns.State as watchedValue2, null as watchedValue3, null as watchedValue4, ns.Extra as Extra, dv.devMac as ForeignKey FROM (SELECT * FROM Nmap_Scan) ns LEFT JOIN (SELECT devName, devMac, devLastIP FROM Devices) dv ON ns.MAC = dv.devMac",
"localized": ["name"],
"name": [{"language_code": "en_us", "string": "SQL to run"}],
"description": [{"language_code": "en_us", "string": "This SQL query populates the plugin table"}]
@@ -118,13 +118,13 @@ Query the NetAlertX SQLite database and display results.
```sql
SELECT
e.EventValue as Object_PrimaryID,
d.devName as Object_SecondaryID,
e.EventValue as objectPrimaryId,
d.devName as objectSecondaryId,
e.EventDateTime as DateTime,
e.EventType as Watched_Value1,
d.devLastIP as Watched_Value2,
null as Watched_Value3,
null as Watched_Value4,
e.EventType as watchedValue1,
d.devLastIP as watchedValue2,
null as watchedValue3,
null as watchedValue4,
e.EventDetails as Extra,
d.devMac as ForeignKey
FROM
@@ -181,7 +181,7 @@ Then set data source and query:
```json
{
"function": "CMD",
"default_value": "SELECT hwaddr as Object_PrimaryID, cast('http://' || (SELECT ip FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1) as VARCHAR(100)) || ':' || cast(SUBSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1), 0, INSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1), '/')) as VARCHAR(100)) as Object_SecondaryID, datetime() as DateTime, macVendor as Watched_Value1, lastQuery as Watched_Value2, (SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1) as Watched_Value3, null as Watched_Value4, '' as Extra, hwaddr as ForeignKey FROM EXTERNAL_PIHOLE.network WHERE hwaddr NOT LIKE 'ip-%' AND hwaddr <> '00:00:00:00:00:00'",
"default_value": "SELECT hwaddr as objectPrimaryId, cast('http://' || (SELECT ip FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1) as VARCHAR(100)) || ':' || cast(SUBSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1), 0, INSTR((SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1), '/')) as VARCHAR(100)) as objectSecondaryId, datetime() as DateTime, macVendor as watchedValue1, lastQuery as watchedValue2, (SELECT name FROM EXTERNAL_PIHOLE.network_addresses WHERE network_id = id ORDER BY lastseen DESC LIMIT 1) as watchedValue3, null as watchedValue4, '' as Extra, hwaddr as ForeignKey FROM EXTERNAL_PIHOLE.network WHERE hwaddr NOT LIKE 'ip-%' AND hwaddr <> '00:00:00:00:00:00'",
"localized": ["name"],
"name": [{"language_code": "en_us", "string": "SQL to run"}]
}

View File

@@ -15,22 +15,62 @@ Plugins communicate with NetAlertX by writing results to a **pipe-delimited log
**Required Columns:** 9 (mandatory) + up to 4 optional helper columns = 13 total
## Using `plugin_helper.py`
The easiest way to ensure correct output is to use the [`plugin_helper.py`](../front/plugins/plugin_helper.py) library:
```python
from plugin_helper import Plugin_Objects
# Initialize with your plugin's prefix
plugin_objects = Plugin_Objects("YOURPREFIX")
# Add objects
plugin_objects.add_object(
objectPrimaryId="device_id",
objectSecondaryId="192.168.1.1",
DateTime="2023-01-02 15:56:30",
watchedValue1="online",
watchedValue2=None,
watchedValue3=None,
watchedValue4=None,
Extra="Additional data",
ForeignKey="aa:bb:cc:dd:ee:ff",
helpVal1=None,
helpVal2=None,
helpVal3=None,
helpVal4=None
)
# Write results (handles formatting, sanitization, and file creation)
plugin_objects.write_result_file()
```
The library automatically:
- Validates data types
- Sanitizes string values
- Normalizes MAC addresses
- Writes to the correct file location
- Creates the file in `/tmp/log/plugins/last_result.<PREFIX>.log`
## Column Specification
> [!NOTE]
> The order of columns is **FIXED** and cannot be changed. All 9 mandatory columns must be provided. If you use any optional column (`HelpVal1`), you must supply all optional columns (`HelpVal1` through `HelpVal4`).
> The order of columns is **FIXED** and cannot be changed. All 9 mandatory columns must be provided. If you use any optional column (`helpVal1`), you must supply all optional columns (`helpVal1` through `helpVal4`).
### Mandatory Columns (08)
| Order | Column Name | Type | Required | Description |
|-------|-------------|------|----------|-------------|
| 0 | `Object_PrimaryID` | string | **YES** | The primary identifier for grouping. Examples: device MAC, hostname, service name, or any unique ID |
| 1 | `Object_SecondaryID` | string | no | Secondary identifier for relationships (e.g., IP address, port, sub-ID). Use `null` if not needed |
| 0 | `objectPrimaryId` | string | **YES** | The primary identifier for grouping. Examples: device MAC, hostname, service name, or any unique ID |
| 1 | `objectSecondaryId` | string | no | Secondary identifier for relationships (e.g., IP address, port, sub-ID). Use `null` if not needed |
| 2 | `DateTime` | string | **YES** | Timestamp when the event/data was collected. Format: `YYYY-MM-DD HH:MM:SS` |
| 3 | `Watched_Value1` | string | **YES** | Primary watched value. Changes trigger notifications. Examples: IP address, status, version |
| 4 | `Watched_Value2` | string | no | Secondary watched value. Use `null` if not needed |
| 5 | `Watched_Value3` | string | no | Tertiary watched value. Use `null` if not needed |
| 6 | `Watched_Value4` | string | no | Quaternary watched value. Use `null` if not needed |
| 3 | `watchedValue1` | string | **YES** | Primary watched value. Changes trigger notifications. Examples: IP address, status, version |
| 4 | `watchedValue2` | string | no | Secondary watched value. Use `null` if not needed |
| 5 | `watchedValue3` | string | no | Tertiary watched value. Use `null` if not needed |
| 6 | `watchedValue4` | string | no | Quaternary watched value. Use `null` if not needed |
| 7 | `Extra` | string | no | Any additional metadata to display in UI and notifications. Use `null` if not needed |
| 8 | `ForeignKey` | string | no | Foreign key linking to parent object (usually MAC address for device relationship). Use `null` if not needed |
@@ -38,10 +78,10 @@ Plugins communicate with NetAlertX by writing results to a **pipe-delimited log
| Order | Column Name | Type | Required | Description |
|-------|-------------|------|----------|-------------|
| 9 | `HelpVal1` | string | *conditional* | Helper value 1. If used, all help values must be supplied |
| 10 | `HelpVal2` | string | *conditional* | Helper value 2. If used, all help values must be supplied |
| 11 | `HelpVal3` | string | *conditional* | Helper value 3. If used, all help values must be supplied |
| 12 | `HelpVal4` | string | *conditional* | Helper value 4. If used, all help values must be supplied |
| 9 | `helpVal1` | string | *conditional* | Helper value 1. If used, all help values must be supplied |
| 10 | `helpVal2` | string | *conditional* | Helper value 2. If used, all help values must be supplied |
| 11 | `helpVal3` | string | *conditional* | Helper value 3. If used, all help values must be supplied |
| 12 | `helpVal4` | string | *conditional* | Helper value 4. If used, all help values must be supplied |
## Usage Guide
@@ -58,15 +98,15 @@ Watched values are fields that the NetAlertX core monitors for **changes between
**How to use them:**
- `Watched_Value1`: Always required; primary indicator of status/state
- `Watched_Value24`: Optional; use for secondary/tertiary state information
- `watchedValue1`: Always required; primary indicator of status/state
- `watchedValue24`: Optional; use for secondary/tertiary state information
- Leave unused ones as `null`
**Example:**
- Device scanner: `Watched_Value1 = "online"` or `"offline"`
- Port scanner: `Watched_Value1 = "80"` (port number), `Watched_Value2 = "open"` (state)
- Service monitor: `Watched_Value1 = "200"` (HTTP status), `Watched_Value2 = "0.45"` (response time)
- Device scanner: `watchedValue1 = "online"` or `"offline"`
- Port scanner: `watchedValue1 = "80"` (port number), `watchedValue2 = "open"` (state)
- Service monitor: `watchedValue1 = "200"` (HTTP status), `watchedValue2 = "0.45"` (response time)
### Foreign Key
@@ -110,14 +150,14 @@ https://google.com|null|2023-01-02 15:56:30|200|0.7898||null|null
Missing pipe
```
**Missing mandatory Watched_Value1** (column 3):
**Missing mandatory watchedValue1** (column 3):
```csv
https://duckduckgo.com|192.168.1.1|2023-01-02 15:56:30|null|0.9898|null|null|Best|null
Must not be null
```
**Incomplete optional columns** (has HelpVal1 but missing HelpVal24):
**Incomplete optional columns** (has helpVal1 but missing helpVal24):
```csv
device|null|2023-01-02 15:56:30|status|null|null|null|null|null|helper1
@@ -134,50 +174,11 @@ device|null|2023-01-02 15:56:30|status|null|null|null|null|null|h1|h2|h3|h4
device|null|2023-01-02 15:56:30|status|null|null|null|null|null
```
## Using `plugin_helper.py`
The easiest way to ensure correct output is to use the [`plugin_helper.py`](../front/plugins/plugin_helper.py) library:
```python
from plugin_helper import Plugin_Objects
# Initialize with your plugin's prefix
plugin_objects = Plugin_Objects("YOURPREFIX")
# Add objects
plugin_objects.add_object(
Object_PrimaryID="device_id",
Object_SecondaryID="192.168.1.1",
DateTime="2023-01-02 15:56:30",
Watched_Value1="online",
Watched_Value2=None,
Watched_Value3=None,
Watched_Value4=None,
Extra="Additional data",
ForeignKey="aa:bb:cc:dd:ee:ff",
HelpVal1=None,
HelpVal2=None,
HelpVal3=None,
HelpVal4=None
)
# Write results (handles formatting, sanitization, and file creation)
plugin_objects.write_result_file()
```
The library automatically:
- Validates data types
- Sanitizes string values
- Normalizes MAC addresses
- Writes to the correct file location
- Creates the file in `/tmp/log/plugins/last_result.<PREFIX>.log`
## De-duplication
The core runs **de-duplication once per hour** on the `Plugins_Objects` table:
- **Duplicate Detection Key:** Combination of `Object_PrimaryID`, `Object_SecondaryID`, `Plugin` (auto-filled from `unique_prefix`), and `UserData`
- **Duplicate Detection Key:** Combination of `objectPrimaryId`, `objectSecondaryId`, `Plugin` (auto-filled from `unique_prefix`), and `UserData`
- **Resolution:** Oldest duplicate entries are removed, newest are kept
- **Use Case:** Prevents duplicate notifications when the same object is detected multiple times
@@ -186,6 +187,7 @@ The core runs **de-duplication once per hour** on the `Plugins_Objects` table:
**Required Format:** `YYYY-MM-DD HH:MM:SS`
**Examples:**
- `2023-01-02 15:56:30`
- `2023-1-2 15:56:30` ❌ (missing leading zeros)
- `2023-01-02T15:56:30` ❌ (wrong separator)
@@ -213,9 +215,9 @@ Before writing your plugin's `script.py`, ensure:
- [ ] **9 or 13 columns** in each output line (8 or 12 pipe separators)
- [ ] **Mandatory columns filled:**
- Column 0: `Object_PrimaryID` (not null)
- Column 0: `objectPrimaryId` (not null)
- Column 2: `DateTime` in `YYYY-MM-DD HH:MM:SS` format
- Column 3: `Watched_Value1` (not null)
- Column 3: `watchedValue1` (not null)
- [ ] **Null values as literal string** `null` (not empty string or special chars)
- [ ] **No extra pipes or misaligned columns**
- [ ] **If using optional helpers** (columns 912), all 4 must be present

View File

@@ -68,13 +68,13 @@ try:
# Add an object to results
plugin_objects.add_object(
Object_PrimaryID="example_id",
Object_SecondaryID=None,
objectPrimaryId="example_id",
objectSecondaryId=None,
DateTime="2023-01-02 15:56:30",
Watched_Value1="value1",
Watched_Value2=None,
Watched_Value3=None,
Watched_Value4=None,
watchedValue1="value1",
watchedValue2=None,
watchedValue3=None,
watchedValue4=None,
Extra="additional_data",
ForeignKey=None
)

View File

@@ -7,6 +7,7 @@ Configure how your plugin's data is displayed in the NetAlertX web interface.
Plugin results are displayed in the UI via the **Plugins page** and **Device details tabs**. You control the appearance and functionality of these displays by defining `database_column_definitions` in your plugin's `config.json`.
Each column definition specifies:
- Which data field to display
- How to render it (label, link, color-coded badge, etc.)
- What CSS classes to apply
@@ -16,7 +17,7 @@ Each column definition specifies:
```json
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "devMac",
"mapped_to_column_data": null,
"css_classes": "col-sm-2",
@@ -39,7 +40,7 @@ Each column definition specifies:
| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `column` | string | **YES** | Source column name from data contract (e.g., `Object_PrimaryID`, `Watched_Value1`) |
| `column` | string | **YES** | Source column name from data contract (e.g., `objectPrimaryId`, `watchedValue1`) |
| `mapped_to_column` | string | no | Target database column if mapping to a table like `CurrentScan` |
| `mapped_to_column_data` | object | no | Static value to map instead of using column data |
| `css_classes` | string | no | Bootstrap CSS classes for width/spacing (e.g., `"col-sm-2"`, `"col-sm-6"`) |
@@ -64,7 +65,7 @@ Plain text display (read-only).
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "label",
"localized": ["name"],
@@ -99,7 +100,7 @@ Resolves an IP address to a MAC address and creates a device link.
```json
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"show": true,
"type": "device_ip",
"localized": ["name"],
@@ -117,7 +118,7 @@ Creates a device link with the target device's name as the link label.
```json
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"show": true,
"type": "device_name_mac",
"localized": ["name"],
@@ -135,7 +136,7 @@ Renders as a clickable HTTP/HTTPS link.
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "url",
"localized": ["name"],
@@ -153,7 +154,7 @@ Creates two links (HTTP and HTTPS) as lock icons for the given IP/hostname.
```json
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"show": true,
"type": "url_http_https",
"localized": ["name"],
@@ -207,7 +208,7 @@ Color-codes values based on ranges. Useful for status codes, latency, capacity p
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "threshold",
"options": [
@@ -252,7 +253,7 @@ Replaces specific values with display strings or HTML.
```json
{
"column": "Watched_Value2",
"column": "watchedValue2",
"show": true,
"type": "replace",
"options": [
@@ -275,6 +276,7 @@ Replaces specific values with display strings or HTML.
```
**Output Examples:**
- `"online"` → 🟢 Online
- `"offline"` → 🔴 Offline
- `"idle"` → 🟡 Idle
@@ -286,7 +288,7 @@ Applies a regular expression to extract/transform values.
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "regex",
"options": [
@@ -310,7 +312,7 @@ Evaluates JavaScript code with access to the column value (use `${value}` or `{v
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "eval",
"default_value": "",
@@ -322,7 +324,7 @@ Evaluates JavaScript code with access to the column value (use `${value}` or `{v
**Example with custom formatting:**
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "eval",
"options": [
@@ -347,7 +349,7 @@ You can chain multiple transformations with dot notation:
```json
{
"column": "Watched_Value3",
"column": "watchedValue3",
"show": true,
"type": "regex.url_http_https",
"options": [
@@ -376,7 +378,7 @@ Use SQL query results to populate dropdown options:
```json
{
"column": "Watched_Value2",
"column": "watchedValue2",
"show": true,
"type": "select",
"options": ["{value}"],
@@ -405,7 +407,7 @@ Use plugin settings to populate options:
```json
{
"column": "Watched_Value1",
"column": "watchedValue1",
"show": true,
"type": "select",
"options": ["{value}"],
@@ -439,7 +441,7 @@ To import plugin data into the device scan pipeline (for notifications, heuristi
"mapped_to_table": "CurrentScan",
"database_column_definitions": [
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "scanMac",
"show": true,
"type": "device_mac",
@@ -447,7 +449,7 @@ To import plugin data into the device scan pipeline (for notifications, heuristi
"name": [{"language_code": "en_us", "string": "MAC Address"}]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"mapped_to_column": "scanLastIP",
"show": true,
"type": "device_ip",
@@ -501,7 +503,7 @@ Control which rows are displayed based on filter conditions. Filters are applied
{
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -545,7 +547,7 @@ When viewing a device detail page, the `txtMacFilter` field is populated with th
{
"database_column_definitions": [
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "scanMac",
"css_classes": "col-sm-2",
"show": true,
@@ -555,7 +557,7 @@ When viewing a device detail page, the `txtMacFilter` field is populated with th
"name": [{"language_code": "en_us", "string": "MAC Address"}]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"mapped_to_column": "scanLastIP",
"css_classes": "col-sm-2",
"show": true,
@@ -574,7 +576,7 @@ When viewing a device detail page, the `txtMacFilter` field is populated with th
"name": [{"language_code": "en_us", "string": "Last Seen"}]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-2",
"show": true,
"type": "threshold",
@@ -589,7 +591,7 @@ When viewing a device detail page, the `txtMacFilter` field is populated with th
"name": [{"language_code": "en_us", "string": "HTTP Status"}]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-1",
"show": true,
"type": "label",

View File

@@ -33,19 +33,22 @@ VPNs use virtual interfaces (e.g., `tun0`, `tap0`) to encapsulate traffic, bypas
> **Possible workaround**: Configure the VPN to bridge networks instead of routing to enable ARP, though this depends on the VPN setup and security requirements.
# Other Workarounds
## Other Workarounds
The following workarounds should work for most complex network setups.
## Supplementing Plugins
### 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](./PLUGINS.md) to find a plugin that works with your router and network setup.
## Multiple NetAlertX Instances
### Multiple NetAlertX Instances
If you have servers in different networks, you can set up separate NetAlertX instances on those subnets and synchronize the results into one instance using the [`SYNC` plugin](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/sync).
## Manual Entry
> [!TIP]
> The [`SYNC_BEHAVIOR`](https://github.com/netalertx/NetAlertX/tree/main/front/plugins/sync/README.md#hub-device-write-behavior-sync_behavior) setting controls how the hub handles newly discovered devices from nodes - whether it inherits node config, overwrites on every sync, or applies its own NEWDEV defaults.
### Manual Entry
If you don't need to discover new devices and only need to report on their status (`online`, `offline`, `down`), you can manually enter devices and check their status using the [`ICMP` plugin](https://github.com/netalertx/NetAlertX/blob/main/front/plugins/icmp_scan/), which uses the `ping` command internally.
@@ -53,7 +56,7 @@ For more information on how to add devices manually (or dummy devices), refer to
To create truly dummy devices, you can use a loopback IP address (e.g., `0.0.0.0` or `127.0.0.1`) or the `Force Status` field so they appear online.
## NMAP and Fake MAC Addresses
### NMAP and Fake MAC Addresses
Scanning remote networks with NMAP is possible (via the `NMAPDEV` plugin), but since it cannot retrieve the MAC address, you need to enable the `NMAPDEV_FAKE_MAC` setting. This will generate a fake MAC address based on the IP address, allowing you to track devices. However, this can lead to inconsistencies, especially if the IP address changes or a previously logged device is rediscovered. If this setting is disabled, only the IP address will be discovered, and devices with missing MAC addresses will be skipped.

View File

@@ -8,7 +8,7 @@ This includes (but is not limited to):
- Running NetAlertX only on networks where you have legal authorization
- Keeping your deployment up to date with the latest patches
> NetAlertX is not responsible for misuse, misconfiguration, or unsecure deployments. Always test and secure your setup before exposing it to the outside world.
> NetAlertX is not responsible for misuse, misconfiguration, or insecure deployments. Always test and secure your setup before exposing it to the outside world. Users interacting with the UI are treated as trusted actors within the deployment model.
# 🔐 Securing Your NetAlertX Instance
@@ -36,7 +36,7 @@ NetAlertX is designed to be run on **private LANs**, not the open internet.
### ✅ Tailscale (Easy VPN Alternative)
Tailscale sets up a private mesh network between your devices. It's fast to configure and ideal for NetAlertX.
Tailscale sets up a private mesh network between your devices. It's fast to configure and ideal for NetAlertX.
👉 [Get started with Tailscale](https://tailscale.com/)
---
@@ -63,19 +63,19 @@ By default, NetAlertX does **not** require login. Before exposing the UI in any
## 🔥 Additional Security Measures
- **Firewall / Network Rules**
- **Firewall / Network Rules**
Restrict UI/API access to trusted IPs only.
- **Limit Docker Capabilities**
- **Limit Docker Capabilities**
Avoid `--privileged`. Use `--cap-add=NET_RAW` and others **only if required** by your scan method.
- **Keep NetAlertX Updated**
- **Keep NetAlertX Updated**
Regular updates contain bug fixes and security patches.
- **Plugin Permissions**
- **Plugin Permissions**
Disable unused plugins. Only install from trusted sources.
- **Use Read-Only API Keys**
- **Use Read-Only API Keys**
When integrating NetAlertX with other tools, scope keys tightly.
---

View File

@@ -8,8 +8,15 @@ You need to specify the network interface and the network mask. You can also con
> 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.
> If this command returns no results:
>
> - ✅ If you see output like `IPv4: (none)` or `Using 0.0.0.0`:
> - The interface was not detected correctly.
> - Fix: explicitly set the interface using `--interface=<name>`.
>
> - ❌ If the scan runs correctly but still finds no devices:
> - The network may not be accessible due to firewall, VLAN, or network restrictions (Wi-Fi extenders, VPNs, etc.).
> - If direct scans are not possible, check the [remote networks documentation](./REMOTE_NETWORKS.md) for workarounds.
## Example Values

View File

@@ -1,10 +1,10 @@
# 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.
The workflows module 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.
![Workflows diagram](./img/WORKFLOWS/workflows_diagram.png)
Below are a few examples that demonstrate how this module can be used to simplify network management tasks.
You can find a couple of use case examples in [Workflow Examples](WORKFLOW_EXAMPLES.md).
## Updating Workflows

View File

@@ -49,19 +49,19 @@ Sometimes devices are manually archived (e.g., no longer expected on the network
### 🔍 Explanation
- Trigger: Listens for updates to device records.
- Conditions:
- `devIsArchived` is `1` (archived).
- `devPresentLastScan` is `1` (device was detected in the latest scan).
- Action: Updates the device to set `devIsArchived` to `0` (unarchived).
* **Trigger**: Listens for updates to device records.
* **Conditions**:
* `devIsArchived` is `1` (archived).
* `devPresentLastScan` is `1` (device was detected in the latest scan).
* **Action**:
* Updates the device to set `devIsArchived` to `0` (unarchived).
### ✅ Result
Whenever a previously archived device shows up during a network scan, it will be automatically unarchived — allowing it to reappear in your device lists and dashboards.
Here is your updated version of **Example 2** and **Example 3**, fully aligned with the format and structure of **Example 1** for consistency and professionalism:
---
## Example 2: Assign Device to Network Node Based on IP
@@ -107,7 +107,7 @@ When new devices join your network, assigning them to the correct network node i
### 🔍 Explanation
* **Trigger**: Activates when a new device is added.
* **Condition**:
* **Conditions**:
* `devLastIP` contains `192.168.1.` (matches subnet).
* **Action**:
@@ -173,12 +173,12 @@ You may want to automatically clear out newly detected Google devices (such as C
* **Trigger**: Runs on device updates.
* **Conditions**:
* Vendor contains `Google`.
* Device is marked as new (`devIsNew` is `1`).
* `devVendor` contains `Google`.
* `devIsNew` is `1` (device marked as new).
* **Actions**:
1. Set `devIsNew` to `0` (mark as not new).
2. Delete the device.
1. Sets `devIsNew` to `0` (mark as not new).
2. Deletes the device.
### ✅ Result

View File

@@ -61,16 +61,16 @@ $(document).ready(function () {
appEvents(options: $options) {
count
appEvents {
DateTimeCreated
AppEventProcessed
AppEventType
ObjectType
ObjectPrimaryID
ObjectSecondaryID
ObjectStatus
ObjectPlugin
ObjectGUID
GUID
dateTimeCreated
appEventProcessed
appEventType
objectType
objectPrimaryId
objectSecondaryId
objectStatus
objectPlugin
objectGuid
guid
}
}
}
@@ -128,16 +128,16 @@ $(document).ready(function () {
},
columns: [
{ data: 'DateTimeCreated', title: getString('AppEvents_DateTimeCreated') },
{ data: 'AppEventProcessed', title: getString('AppEvents_AppEventProcessed') },
{ data: 'AppEventType', title: getString('AppEvents_Type') },
{ data: 'ObjectType', title: getString('AppEvents_ObjectType') },
{ data: 'ObjectPrimaryID', title: getString('AppEvents_ObjectPrimaryID') },
{ data: 'ObjectSecondaryID', title: getString('AppEvents_ObjectSecondaryID') },
{ data: 'ObjectStatus', title: getString('AppEvents_ObjectStatus') },
{ data: 'ObjectPlugin', title: getString('AppEvents_Plugin') },
{ data: 'ObjectGUID', title: 'Object GUID' },
{ data: 'GUID', title: 'Event GUID' }
{ data: 'dateTimeCreated', title: getString('AppEvents_DateTimeCreated') },
{ data: 'appEventProcessed', title: getString('AppEvents_AppEventProcessed') },
{ data: 'appEventType', title: getString('AppEvents_Type') },
{ data: 'objectType', title: getString('AppEvents_ObjectType') },
{ data: 'objectPrimaryId', title: getString('AppEvents_ObjectPrimaryID') },
{ data: 'objectSecondaryId', title: getString('AppEvents_ObjectSecondaryID') },
{ data: 'objectStatus', title: getString('AppEvents_ObjectStatus') },
{ data: 'objectPlugin', title: getString('AppEvents_Plugin') },
{ data: 'objectGuid', title: 'Object GUID' },
{ data: 'guid', title: 'Event GUID' }
],
columnDefs: [

View File

@@ -34,15 +34,15 @@ h5
a[target="_blank"] {
position: relative;
display: inline-block; /* Needed for positioning */
padding-right: 0.6em; /* Space for the icon */
padding-right: 0.55em; /* Space for the icon */
}
a[target="_blank"]::after {
content: '↗';
position: absolute;
top: 0;
right: 0;
font-size: 0.75em;
right: 0.3em;
font-size: 0.6em;
line-height: 1;
}
@@ -1413,15 +1413,49 @@ textarea[readonly],
#columnFilters {
display: flex;
flex-wrap: wrap;
gap: 10px; /* Add spacing between items */
display: grid;
grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
gap: 0.75em;
padding: 0.5em 0;
padding-top: 0;
}
#columnFilters::before,
#columnFilters::after {
display: none !important;
}
.filter-group {
box-sizing: border-box; /* Ensure padding and borders are included in the width */
padding: 1em;
padding-top: 0;
box-sizing: border-box;
padding: 0.4em;
margin: 0;
border-radius: 3px;
display: flex;
flex-direction: column;
align-items: stretch;
gap: 0.15em;
white-space: normal;
}
.filter-group label {
box-sizing: border-box;
margin: 0;
border-radius: 3px;
display: flex;
flex-direction: column;
align-items: stretch;
gap: 0.15em;
white-space: normal;
padding-left: 15px;
padding-right: 0px;
}
.filter-dropdown {
width: 100%;
}
.filter-group select {
margin-left: 15px;
padding-right: 0px;
}
.filter-dropdown
@@ -1512,6 +1546,11 @@ textarea[readonly],
height: 1.5em;
}
#nextScanEta
{
padding-left: 1.5em;
}
.info-icon-nav
{
top: -6px;

View File

@@ -307,7 +307,10 @@ function updateChevrons(currentMac) {
pos = refreshedList.findIndex(item => item.devMac === currentMac);
if (pos === -1) {
console.error('Still not found after re-cache:', currentMac);
console.warn('Device not found in device list after re-cache — hiding navigation controls:', currentMac);
$('#txtRecord').hide();
$('#btnPrevious').hide();
$('#btnNext').hide();
return;
}
@@ -499,26 +502,9 @@ async function renderSmallBoxes() {
}
}
function updateDevicePageName(mac) {
let name = getDevDataByMac(mac, "devName");
let owner = getDevDataByMac(mac, "devOwner");
// If data is missing, re-cache and retry once
if (mac != 'new' && (name === null|| owner === null)) {
console.warn("Device not found in cache, retrying after re-cache:", mac);
showSpinner();
cacheDevices(true).then(() => {
hideSpinner();
// Retry after successful cache
updateDevicePageName(mac);
}).catch((err) => {
hideSpinner();
console.error("Failed to refresh devices:", err);
});
return; // Exit early to avoid showing bad data
}
// Page title - Name
// ----------------------------------------
// Write device name/owner into page title DOM. Pure DOM side-effect, no data fetching.
function applyDevicePageTitle(mac, name, owner) {
let pageTitleText;
if (mac === "new") {
@@ -530,12 +516,12 @@ function updateDevicePageName(mac) {
`<i class="fa fa-circle-info"></i> ` + getString("Gen_create_new_device_info")
);
$('#devicePageInfoPlc').show();
} else if (!owner || name.toString().includes(owner)) {
pageTitleText = name;
} else if (!owner || (name && name.toString().includes(owner))) {
pageTitleText = encodeSpecialChars(name ?? getString("DevDetail_EveandAl_NewDevice"));
$('#pageTitle').html(pageTitleText);
$('#devicePageInfoPlc').hide();
} else {
pageTitleText = `${name} (${owner})`;
pageTitleText = `${encodeSpecialChars(name ?? getString("DevDetail_EveandAl_NewDevice"))} (${encodeSpecialChars(owner)})`;
$('#pageTitle').html(pageTitleText);
$('#devicePageInfoPlc').hide();
}
@@ -544,6 +530,53 @@ function updateDevicePageName(mac) {
$('title').html(pageTitleText + ' - ' + $('title').html());
}
// ----------------------------------------
// Resolve device name/owner for the page title.
// Stage 1: localStorage cache (synchronous, fast path).
// Stage 2: one forced re-cache from table_devices.json.
// Stage 3: REST API fallback so a direct-link visit never loops.
async function updateDevicePageName(mac) {
let name = getDevDataByMac(mac, "devName");
let owner = getDevDataByMac(mac, "devOwner");
// Stage 2: one re-cache attempt
if (mac !== 'new' && name === null) {
console.warn("Device not in cache, attempting re-cache:", mac);
showSpinner();
try {
await cacheDevices(true);
} catch (err) {
console.error("Re-cache failed:", err);
} finally {
hideSpinner();
}
name = getDevDataByMac(mac, "devName");
owner = getDevDataByMac(mac, "devOwner");
}
// Stage 3: REST fallback — same endpoint renderSmallBoxes uses, always DB-direct
if (mac !== 'new' && name === null) {
console.warn("Device not found in cache after re-cache, falling back to REST API:", mac);
try {
const { apiBase, authHeader } = getAuthContext();
const res = await fetch(`${apiBase}/device/${encodeURIComponent(mac)}`, {
headers: authHeader
});
if (res.ok) {
const data = await res.json();
name = data.devName ?? null;
owner = data.devOwner ?? null;
} else {
console.error("REST fallback for device name returned:", res.status);
}
} catch (err) {
console.error("REST fallback error:", err);
}
}
applyDevicePageTitle(mac, name, owner);
}
//-----------------------------------------------------------------------------------

View File

@@ -236,6 +236,7 @@ function getDeviceData() {
// console.log(setting.setKey);
// console.log(fieldData);
// Additional form elements like the random MAC address button for devMac
let inlineControl = "";
// handle random mac
@@ -329,6 +330,11 @@ function getDeviceData() {
fieldOptionsOverride = fieldDataNew;
}
// XSS prevention - encode special characters for string fields, but not for arrays (like children dynamic)
// Don't move above the handle devChildrenDynamic block because it relies on the original fieldData to generate options
fieldData = encodeSpecialChars(fieldData);
// console.log(fieldData);
// Generate the input field HTML
const inputFormHtml = `<div class="form-group col-xs-12">
<label id="${setting.setKey}_label" class="${obj.labelClasses}" > ${setting.setName}

View File

@@ -31,52 +31,71 @@
<script>
function loadEventsData() {
const mac = getMac();
if (!mac) {
console.warn("loadEventsData: mac not set, skipping");
return;
}
const hideConnections = $('#chkHideConnectionEvents')[0].checked;
const hideConnectionsStr = hideConnections ? 'true' : 'false';
let period = $("#period").val();
let { start, end } = getPeriodStartEnd(period);
const rawSql = `
SELECT eve_DateTime, eve_EventType, eve_IP, eve_AdditionalInfo
FROM Events
WHERE eve_MAC = "${mac}"
AND eve_DateTime BETWEEN "${start}" AND "${end}"
AND (
(eve_EventType NOT IN ("Connected", "Disconnected", "VOIDED - Connected", "VOIDED - Disconnected"))
OR "${hideConnectionsStr}" = "false"
)
const apiToken = getSetting("API_TOKEN");
const apiBase = getApiBase();
const graphqlUrl = `${apiBase}/graphql`;
const query = `
query Events($options: EventQueryOptionsInput) {
events(options: $options) {
count
entries {
eveDateTime
eveEventType
eveIp
eveAdditionalInfo
}
}
}
`;
const apiToken = getSetting("API_TOKEN");
const apiBaseUrl = getApiBase();
const url = `${apiBaseUrl}/dbquery/read`;
$.ajax({
url: url,
url: graphqlUrl,
method: "POST",
contentType: "application/json",
headers: {
"Authorization": `Bearer ${apiToken}`
},
data: JSON.stringify({
rawSql: btoa(rawSql)
query,
variables: {
options: {
eveMac: mac, // local const from getMac() above
dateFrom: start,
dateTo: end,
limit: 500,
sort: [{ field: "eveDateTime", order: "desc" }]
}
}
}),
success: function (data) {
// assuming read_query returns rows directly
const rows = data["results"].map(row => {
const rawDate = row.eve_DateTime;
const formattedDate = rawDate ? localizeTimestamp(rawDate) : '-';
const CONNECTION_TYPES = ["Connected", "Disconnected", "VOIDED - Connected", "VOIDED - Disconnected"];
return [
formattedDate,
row.eve_DateTime,
row.eve_EventType,
row.eve_IP,
row.eve_AdditionalInfo
];
});
const rows = data.data.events.entries
.filter(row => !hideConnections || !CONNECTION_TYPES.includes(row.eveEventType))
.map(row => {
const rawDate = row.eveDateTime;
const formattedDate = rawDate ? localizeTimestamp(rawDate) : '-';
return [
formattedDate,
row.eveDateTime,
row.eveEventType,
row.eveIp,
row.eveAdditionalInfo
];
});
const table = $('#tableEvents').DataTable();
table.clear();
@@ -150,6 +169,11 @@ function initDeviceEventsPage()
return; // exit early if nothing is visible
}
// Only proceed if mac is available
if (!getMac()) {
return; // exit early if mac is not yet set
}
// init page once
if (eventsPageInitialized) return; // ENSURE ONCE
eventsPageInitialized = true;

View File

@@ -56,9 +56,6 @@ function initializeSessionsDatatable (sessionsRows) {
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
@@ -121,12 +118,12 @@ function loadSessionsData() {
if (data.success && data.sessions.length) {
data.sessions.forEach(session => {
table.row.add([
session.ses_DateTimeOrder,
session.ses_Connection,
session.ses_Disconnection,
session.ses_Duration,
session.ses_IP,
session.ses_Info
session.sesDateTimeOrder,
session.sesConnection,
session.sesDisconnection,
session.sesDuration,
session.sesIp,
session.sesInfo
]);
});
}

View File

@@ -97,6 +97,11 @@
<div class="box-header">
<div class=" col-sm-8 ">
<h3 id="tableDevicesTitle" class="box-title text-gray "></h3>
<span class="helpIconSmallTopRight">
<a target="_blank" href="https://docs.netalertx.com/DEVICE_FILTERS">
<i class="fa fa-circle-question"></i>
</a>
</span>
<!-- Next scan ETA — populated by sse_manager.js via nax:scanEtaUpdate -->
<small id="nextScanEta" class="text-muted" style="display:none;margin-left:8px;font-weight:normal;font-size:0.75em;"></small>
</div>
@@ -430,28 +435,40 @@ function initFilters() {
filters: []
};
// Group data by columnName
resultJSON.forEach(entry => {
const existingFilter = transformed.filters.find(filter => filter.column === entry.columnName);
// Build filters in the exact order of columnFilters
columnFilters.forEach(([columnName, headerKey]) => {
// Get matching entries for this column
const entries = resultJSON.filter(e => e.columnName === columnName);
if (existingFilter) {
// Add the unique columnValue to options if not already present
if (!existingFilter.options.includes(entry.columnValue)) {
existingFilter.options.push(entry.columnValue);
if (entries.length === 0) return;
// Build options (unique)
const optionsMap = new Map();
entries.forEach(entry => {
const value = entry.columnValue;
const label = entry.columnLabel || value;
if (!optionsMap.has(value)) {
optionsMap.set(value, { value, label });
}
} else {
// Create a new filter entry
transformed.filters.push({
column: entry.columnName,
headerKey: entry.columnHeaderStringKey,
options: [entry.columnValue]
});
}
});
const options = Array.from(optionsMap.values());
// Sort options alphabetically
options.sort((a, b) => a.label.localeCompare(b.label));
transformed.filters.push({
column: columnName,
headerKey: headerKey,
options: options
});
});
// Sort options alphabetically for better readability
// Sort options alphabetically by label for better readability
transformed.filters.forEach(filter => {
filter.options.sort();
filter.options.sort((a, b) => a.label.localeCompare(b.label));
});
// Output the result
@@ -867,44 +884,46 @@ function initializeDatatable (status) {
{className: 'iconColumn text-center', targets: [mapIndx(COL.devIcon)]},
{width: '80px', targets: [mapIndx(COL.devFirstConnection), mapIndx(COL.devLastConnection), mapIndx(COL.devParentChildrenCount), mapIndx(COL.devFQDN)] },
{width: '85px', targets: [mapIndx(COL.devIsRandomMac)] },
{width: '130px', targets: [mapIndx(COL.devLastIP), mapIndx(COL.devIpLong)] },
{width: '30px', targets: [mapIndx(COL.devIcon), mapIndx(COL.devStatus), mapIndx(COL.rowid), mapIndx(COL.devParentPort)] },
{orderData: [mapIndx(COL.devIpLong)], targets: mapIndx(COL.devLastIP) },
// Device Name and FQDN
// Use `render` (not `createdCell`) so the HTML is built before DataTables
// sets td.innerHTML preventing raw cellData from being parsed as HTML.
{targets: [mapIndx(COL.devName), mapIndx(COL.devFQDN)],
'createdCell': function (td, cellData, rowData, row, col) {
// console.log(cellData)
var displayedValue = cellData;
if(isEmpty(displayedValue))
{
displayedValue = "N/A"
'render': function (data, type, row) {
if (type !== 'display') {
return data; // raw value for sort / filter / type detection
}
$(td).html (
`<b class="anonymizeDev "
>
<a href="deviceDetails.php?mac=${rowData[mapIndx(COL.devMac)]}" class="hover-node-info"
data-name="${displayedValue}"
data-ip="${rowData[mapIndx(COL.devLastIP)]}"
data-mac="${rowData[mapIndx(COL.devMac)]}"
data-vendor="${rowData[mapIndx(COL.devVendor)]}"
data-type="${rowData[mapIndx(COL.devType)]}"
data-firstseen="${rowData[mapIndx(COL.devFirstConnection)]}"
data-lastseen="${rowData[mapIndx(COL.devLastConnection)]}"
data-relationship="${rowData[mapIndx(COL.devParentRelType)]}"
data-status="${rowData[mapIndx(COL.devStatus)]}"
data-present="${rowData[mapIndx(COL.devPresentLastScan)]}"
data-alertdown="${rowData[mapIndx(COL.devAlertDown)]}"
data-flapping="${rowData[mapIndx(COL.devFlapping)]}"
data-sleeping="${rowData[COL_EXTRA.devIsSleeping] || 0}"
data-archived="${rowData[COL_EXTRA.devIsArchived] || 0}"
data-isnew="${rowData[COL_EXTRA.devIsNew] || 0}"
data-icon="${rowData[mapIndx(COL.devIcon)]}">
${displayedValue}
</a>
</b>`
var displayedValue = encodeSpecialChars(data);
if (isEmpty(displayedValue)) {
displayedValue = "N/A";
}
return (
`<b class="anonymizeDev ">` +
`<a href="deviceDetails.php?mac=${row[mapIndx(COL.devMac)]}" class="hover-node-info"` +
` data-name="${displayedValue}"` +
` data-ip="${row[mapIndx(COL.devLastIP)]}"` +
` data-mac="${row[mapIndx(COL.devMac)]}"` +
` data-vendor="${row[mapIndx(COL.devVendor)]}"` +
` data-type="${row[mapIndx(COL.devType)]}"` +
` data-firstseen="${row[mapIndx(COL.devFirstConnection)]}"` +
` data-lastseen="${row[mapIndx(COL.devLastConnection)]}"` +
` data-relationship="${row[mapIndx(COL.devParentRelType)]}"` +
` data-status="${row[mapIndx(COL.devStatus)]}"` +
` data-present="${row[mapIndx(COL.devPresentLastScan)]}"` +
` data-alertdown="${row[mapIndx(COL.devAlertDown)]}"` +
` data-flapping="${row[mapIndx(COL.devFlapping)]}"` +
` data-sleeping="${row[COL_EXTRA.devIsSleeping] || 0}"` +
` data-archived="${row[COL_EXTRA.devIsArchived] || 0}"` +
` data-isnew="${row[COL_EXTRA.devIsNew] || 0}"` +
` data-icon="${row[mapIndx(COL.devIcon)]}"` +
`>${displayedValue}</a>` +
`</b>`
);
} },
@@ -948,16 +967,14 @@ function initializeDatatable (status) {
{targets: [mapIndx(COL.devLastIP)],
'createdCell': function (td, cellData, rowData, row, col) {
if (!emptyArr.includes(cellData)){
$(td).html (`<span class="anonymizeIp">
<a href="http://${cellData}" class="pointer" target="_blank">
${cellData}
</a>
<span class="alignRight lockIcon">
$(td).html (`<div class="anonymizeIp alignRight">
<a href="http://${cellData}" class="pointer" target="_blank">
${cellData}
</a>
<a href="https://${cellData}" class="pointer" target="_blank">
<i class="fa fa-lock "></i>
</a>
<span>
<span>`);
</div>`);
} else {
$(td).html ('');
}

View File

@@ -105,40 +105,85 @@ function main() {
$('#period').val(period);
initializeDatatable();
getEventsTotals();
getEvents(eventsType);
getEvents(eventsType); // triggers first serverSide draw
}
/* ---------------- Initialize DataTable ---------------- */
function initializeDatatable() {
const table = $('#tableEvents').DataTable({
paging: true,
const apiBase = getApiBase();
const apiToken = getSetting("API_TOKEN");
$('#tableEvents').DataTable({
processing: true,
serverSide: true,
paging: true,
lengthChange: true,
lengthMenu: getLengthMenu(getSetting("UI_DEFAULT_PAGE_SIZE")),
searching: true,
ordering: true,
info: true,
autoWidth: false,
order: [[0, "desc"], [3, "desc"], [5, "desc"]],
pageLength: tableRows,
lengthMenu: getLengthMenu(getSetting("UI_DEFAULT_PAGE_SIZE")),
searching: true,
ordering: true,
info: true,
autoWidth: false,
order: [[0, "desc"]],
pageLength: tableRows,
ajax: function (dtRequest, callback) {
const page = Math.floor(dtRequest.start / dtRequest.length) + 1;
const limit = dtRequest.length;
const search = dtRequest.search?.value || '';
const sortCol = dtRequest.order?.length ? dtRequest.order[0].column : 0;
const sortDir = dtRequest.order?.length ? dtRequest.order[0].dir : 'desc';
const url = `${apiBase}/sessions/session-events`
+ `?type=${encodeURIComponent(eventsType)}`
+ `&period=${encodeURIComponent(period)}`
+ `&page=${page}`
+ `&limit=${limit}`
+ `&sortCol=${sortCol}`
+ `&sortDir=${sortDir}`
+ (search ? `&search=${encodeURIComponent(search)}` : '');
$.ajax({
url,
method: "GET",
dataType: "json",
headers: { "Authorization": `Bearer ${apiToken}` },
success: function (response) {
callback({
data: response.data || [],
recordsTotal: response.total || 0,
recordsFiltered: response.recordsFiltered || 0
});
hideSpinner();
},
error: function (xhr, status, error) {
console.error("Error fetching session events:", status, error, xhr.responseText);
callback({ data: [], recordsTotal: 0, recordsFiltered: 0 });
hideSpinner();
}
});
},
columnDefs: [
{ targets: [0,5,6,7,8,10,11,12,13], visible: false },
{ targets: [7], orderData: [8] },
{ targets: [9], orderData: [10] },
{ targets: [1], createdCell: (td, cellData, rowData) => {
// Device column as link
$(td).html(`<b><a href="deviceDetails.php?mac=${rowData[13]}">${cellData}</a></b>`);
// Use `render` (not `createdCell`) so encodeSpecialChars runs before
// DataTables sets td.innerHTML, preventing devName XSS execution.
{ targets: [1], render: function (data, type, row) {
if (type !== 'display') { return data; }
return `<b><a href="deviceDetails.php?mac=${row[13]}">${encodeSpecialChars(data)}</a></b>`;
}},
{ targets: [3], createdCell: (td, cellData) => $(td).html(localizeTimestamp(cellData)) },
{ targets: [4,5,6,7], createdCell: (td, cellData) => $(td).html(translateHTMLcodes(cellData)) }
],
processing: true, // Shows "processing" overlay
language: {
processing: '<table><td width="130px" align="middle"><?= lang("Events_Loading"); ?></td><td><i class="fa-solid fa-spinner fa-spin-pulse"></i></td></table>',
emptyTable: 'No data',
lengthMenu: "<?= lang('Events_Tablelenght'); ?>",
search: "<?= lang('Events_Searchbox'); ?>: ",
paginate: { next: "<?= lang('Events_Table_nav_next'); ?>", previous: "<?= lang('Events_Table_nav_prev'); ?>" },
info: "<?= lang('Events_Table_info'); ?>"
search: "<?= lang('Events_Searchbox'); ?>: ",
paginate: { next: "<?= lang('Events_Table_nav_next'); ?>", previous: "<?= lang('Events_Table_nav_prev'); ?>" },
info: "<?= lang('Events_Table_info'); ?>"
}
});
@@ -179,53 +224,33 @@ function getEventsTotals() {
});
}
/* ---------------- Fetch events and reload DataTable ---------------- */
/* ---------------- Switch event type and reload DataTable ---------------- */
function getEvents(type) {
eventsType = type;
const table = $('#tableEvents').DataTable();
// Event type config: title, color, session columns visibility
const config = {
all: {title: 'Events_Shortcut_AllEvents', color: 'aqua', sesionCols: false},
sessions: {title: 'Events_Shortcut_Sessions', color: 'green', sesionCols: true},
missing: {title: 'Events_Shortcut_MissSessions', color: 'yellow', sesionCols: true},
voided: {title: 'Events_Shortcut_VoidSessions', color: 'yellow', sesionCols: false},
new: {title: 'Events_Shortcut_NewDevices', color: 'yellow', sesionCols: false},
down: {title: 'Events_Shortcut_DownAlerts', color: 'red', sesionCols: false}
all: {title: 'Events_Shortcut_AllEvents', color: 'aqua', sesionCols: false},
sessions: {title: 'Events_Shortcut_Sessions', color: 'green', sesionCols: true},
missing: {title: 'Events_Shortcut_MissSessions', color: 'yellow', sesionCols: true},
voided: {title: 'Events_Shortcut_VoidSessions', color: 'yellow', sesionCols: false},
new: {title: 'Events_Shortcut_NewDevices', color: 'yellow', sesionCols: false},
down: {title: 'Events_Shortcut_DownAlerts', color: 'red', sesionCols: false}
}[type] || {title: 'Events_Shortcut_Events', color: '', sesionCols: false};
// Update title and color
$('#tableEventsTitle').attr('class', 'box-title text-' + config.color).html(getString(config.title));
$('#tableEventsBox').attr('class', 'box box-' + config.color);
// Toggle columns visibility
// Toggle column visibility
table.column(3).visible(!config.sesionCols);
table.column(4).visible(!config.sesionCols);
table.column(5).visible(config.sesionCols);
table.column(6).visible(config.sesionCols);
table.column(7).visible(config.sesionCols);
// Build API URL
const apiBase = getApiBase();
const apiToken = getSetting("API_TOKEN");
const url = `${apiBase}/sessions/session-events?type=${encodeURIComponent(type)}&period=${encodeURIComponent(period)}`;
table.clear().draw(); // Clear old rows
showSpinner()
$.ajax({
url,
method: "GET",
dataType: "json",
headers: { "Authorization": `Bearer ${apiToken}` },
beforeSend: showSpinner, // Show spinner during fetch
complete: hideSpinner, // Hide spinner after fetch
success: response => {
const data = Array.isArray(response) ? response : response.data || [];
table.rows.add(data).draw();
},
error: (xhr, status, error) => console.error("Error fetching session events:", status, error, xhr.responseText)
});
showSpinner();
table.ajax.reload(null, true); // reset to page 1
}
</script>

View File

@@ -16,7 +16,7 @@
// -----------------------------------------------------------------------------
var completedCalls = []
var completedCalls_final = ['cacheApiConfig', 'cacheSettings', 'cacheStrings', 'cacheDevices'];
var completedCalls_final = ['cacheApiConfig', 'cacheSettings', 'cacheStrings_v2', 'cacheDevices'];
var lang_completedCalls = 0;
@@ -126,7 +126,7 @@ function isAppInitialized() {
lang_shouldBeCompletedCalls = getLangCode() == 'en_us' ? 1 : 2;
// check if each ajax call completed succesfully
// check if each ajax call completed successfully
for (const call_name of completedCalls_final) {
if (getCache(CACHE_KEYS.initFlag(call_name)) != "true") {
_isAppInitLog(`[isAppInitialized] waiting on ${call_name} (value: ${getCache(CACHE_KEYS.initFlag(call_name))})`);
@@ -268,7 +268,7 @@ setTimeout(() => {
// page refresh if configured
const refreshTime = getSetting("UI_REFRESH");
if (refreshTime && refreshTime !== "0" && refreshTime !== "") {
console.log("Refreshing page becasue UI_REFRESH setting enabled.");
console.log("Refreshing page because UI_REFRESH setting enabled.");
newTimerRefreshData(clearCache, parseInt(refreshTime)*1000);
}

View File

@@ -290,7 +290,7 @@ function getSetting (key) {
// -----------------------------------------------------------------------------
function cacheStrings() {
return new Promise((resolve, reject) => {
if(getCache(CACHE_KEYS.initFlag('cacheStrings')) === "true")
if(getCache(CACHE_KEYS.initFlag('cacheStrings_v2')) === "true")
{
// Core strings are cached, but plugin strings may have failed silently on
// the first load (non-fatal fetch). Always re-fetch them so that plugin
@@ -304,7 +304,7 @@ function cacheStrings() {
.then((data) => {
if (!Array.isArray(data)) { data = []; }
data.forEach((langString) => {
setCache(CACHE_KEYS.langString(langString.String_Key, langString.Language_Code), langString.String_Value);
setCache(CACHE_KEYS.langString(langString.stringKey, langString.languageCode), langString.stringValue);
});
resolve();
});
@@ -347,11 +347,11 @@ function cacheStrings() {
if (!Array.isArray(data)) { data = []; }
// Store plugin translations
data.forEach((langString) => {
setCache(CACHE_KEYS.langString(langString.String_Key, langString.Language_Code), langString.String_Value);
setCache(CACHE_KEYS.langString(langString.stringKey, langString.languageCode), langString.stringValue);
});
// Handle successful completion of language processing
handleSuccess('cacheStrings');
handleSuccess('cacheStrings_v2');
resolveLang();
});
})
@@ -370,7 +370,7 @@ function cacheStrings() {
})
.catch((error) => {
// Handle failure in any of the language processing
handleFailure('cacheStrings');
handleFailure('cacheStrings_v2');
reject(error);
});

View File

@@ -357,23 +357,67 @@ function isValidJSON(jsonString) {
}
// ----------------------------------------------------
// method to sanitize input so that HTML and other things don't break
/**
* Encode special HTML characters into HTML entities.
*
* Prevents HTML injection/XSS when displaying untrusted text
* inside HTML content contexts.
*
* Example:
* <script> -> &lt;script&gt;
*
* Note:
* - Intended for HTML text contexts only
* - Prefer using textContent or jQuery .text() when possible
* - Do NOT use as the sole protection for inline JS, URLs, CSS,
* or unsafe innerHTML usage
*
* @param {*} str - Value to encode
* @returns {string} Encoded safe HTML string
*/
function encodeSpecialChars(str) {
return str
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
if (str === null || str === undefined) {
return '';
}
str = String(str);
return str
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
// ----------------------------------------------------
/**
* Decode HTML entities back into normal characters.
*
* Example:
* &lt;script&gt; -> <script>
*
* Warning:
* Decoding untrusted content and later inserting it into
* innerHTML or other HTML contexts can reintroduce XSS risks.
*
* @param {*} str - Value to decode
* @returns {string} Decoded string
*/
function decodeSpecialChars(str) {
return str
.replace(/&amp;/g, '&')
.replace(/&lt;/g, '<')
.replace(/&gt;/g, '>')
.replace(/&quot;/g, '"')
.replace(/&#039;/g, '\'');
if (str === null || str === undefined) {
return '';
}
str = String(str);
return str
.replace(/&amp;/g, '&')
.replace(/&lt;/g, '<')
.replace(/&gt;/g, '>')
.replace(/&quot;/g, '"')
.replace(/&#039;/g, '\'');
}
// ----------------------------------------------------
@@ -473,7 +517,7 @@ function createDeviceLink(input)
{
if(checkMacOrInternet(input))
{
return `<span class="anonymizeMac"><a href="/deviceDetails.php?mac=${input}" target="_blank">${getDevDataByMac(input, "devName")}</a><span>`
return `<span class="anonymizeMac"><a href="/deviceDetails.php?mac=${input}" target="_blank">${encodeSpecialChars(getDevDataByMac(input, "devName"))}</a><span>`
}
return input;

View File

@@ -134,7 +134,7 @@ function loadDeviceTable({ sql, containerSelector, tableId, wrapperHtml = null,
width: '15%',
render: function (name, type, device) {
return `<a href="./deviceDetails.php?mac=${device.devMac}" target="_blank">
<b class="anonymize">${name || '-'}</b>
<b class="anonymize">${encodeSpecialChars(name || '-')}</b>
</a>`;
}
},
@@ -156,7 +156,15 @@ function loadDeviceTable({ sql, containerSelector, tableId, wrapperHtml = null,
{
title: getString('Network_Table_IP'),
data: 'devLastIP',
width: '5%'
width: '5%',
render: function (ip, type) {
if (type === 'sort') {
// Convert each octet to a zero-padded 3-digit string for correct numeric sort
if (!ip) return '';
return ip.split('.').map(o => o.padStart(3, '0')).join('.');
}
return ip || '';
}
},
{
title: getString('Device_TableHead_Port'),

View File

@@ -18,9 +18,9 @@ function renderNetworkTabs(nodes) {
html += `
<li class="networkNodeTabHeaders ${i === 0 ? 'active' : ''}">
<a href="#${id}" data-mytabmac="${node.devMac}" id="${id}_id" data-toggle="tab" title="${node.devName}">
<a href="#${id}" data-mytabmac="${node.devMac}" id="${id}_id" data-toggle="tab" title="${encodeSpecialChars(node.devName)}">
<div class="icon ${iconClass}">${icon}</div>
<span class="node-name">${node.devName}</span>${portLabel}
<span class="node-name">${encodeSpecialChars(node.devName)}</span>${portLabel}
</a>
</li>`;
});
@@ -66,7 +66,7 @@ function renderNetworkTabContent(nodes) {
<div class="mb-3 row">
<label class="col-sm-3 col-form-label fw-bold">${getString('DevDetail_Tab_Details')}</label>
<div class="col-sm-9">
<a href="./deviceDetails.php?mac=${node.devMac}" target="_blank" class="anonymize">${node.devName}</a>
<a href="./deviceDetails.php?mac=${node.devMac}" target="_blank" class="anonymize">${encodeSpecialChars(node.devName)}</a>
</div>
</div>
@@ -90,7 +90,7 @@ function renderNetworkTabContent(nodes) {
<div class="col-sm-9">
${isRootNode ? '' : `<a class="anonymize" href="#">`}
<span my-data-mac="${node.devParentMAC}" data-mac="${node.devParentMAC}" data-devIsNetworkNodeDynamic="1" onclick="handleNodeClick(this)">
${isRootNode ? getString('Network_Root') : getDevDataByMac(node.devParentMAC, "devName")}
${isRootNode ? getString('Network_Root') : encodeSpecialChars(getDevDataByMac(node.devParentMAC, "devName"))}
</span>
${isRootNode ? '' : `</a>`}
</div>

View File

@@ -278,7 +278,7 @@ function initTree(myHierarchy)
onclick="handleNodeClick(this)"
data-mac="${nodeData.data.devMac}"
data-parentMac="${nodeData.data.devParentMAC}"
data-name="${nodeData.data.devName}"
data-name="${encodeSpecialChars(nodeData.data.devName)}"
data-ip="${nodeData.data.devLastIP}"
data-mac="${nodeData.data.devMac}"
data-vendor="${nodeData.data.devVendor}"
@@ -298,7 +298,7 @@ function initTree(myHierarchy)
>
<div class="netNodeText">
<strong><span>${devicePort} <span class="${badgeConf.cssText}">${deviceIcon}</span></span>
<span class="spanNetworkTree anonymizeDev" style="width:${nodeWidthPx-50}px">${nodeData.data.devName}</span>
<span class="spanNetworkTree anonymizeDev" style="width:${nodeWidthPx-50}px">${encodeSpecialChars(nodeData.data.devName)}</span>
${networkHardwareIcon}
</strong>
</div>

View File

@@ -770,7 +770,7 @@ function reverseTransformers(val, transformers) {
break;
case "deviceChip":
mac = val // value is mac
val = `${getDevDataByMac(mac, "devName")}`
val = encodeSpecialChars(getDevDataByMac(mac, "devName"))
break;
case "deviceRelType":
val = val; // nothing to do
@@ -789,7 +789,7 @@ const handleElementOptions = (setKey, elementOptions, transformers, val) => {
let inputType = "text";
let readOnly = "";
let isMultiSelect = false;
let isOrdeable = false;
let isOrderable = false;
let cssClasses = "";
let placeholder = "";
let suffix = "";
@@ -820,8 +820,8 @@ const handleElementOptions = (setKey, elementOptions, transformers, val) => {
if (option.multiple === "true") {
isMultiSelect = true;
}
if (option.ordeable === "true") {
isOrdeable = true;
if (option.orderable === "true") {
isOrderable = true;
}
if (option.editable === "true") {
editable = true;
@@ -877,7 +877,7 @@ const handleElementOptions = (setKey, elementOptions, transformers, val) => {
inputType,
readOnly,
isMultiSelect,
isOrdeable,
isOrderable,
cssClasses,
placeholder,
suffix,
@@ -961,7 +961,7 @@ function generateOptions(options, valuesArray, targetField, transformers, placeh
// Always include selected if options are used as a source
let selected = options.length !== 0 && valuesArray.includes(item.id) ? 'selected' : '';
optionsHtml += `<option class="${cssClass}" value="${item.id}" ${selected}>${labelName}</option>`;
optionsHtml += `<option class="${cssClass}" value="${encodeSpecialChars(item.id)}" ${selected}>${encodeSpecialChars(labelName)}</option>`;
});
@@ -1076,7 +1076,7 @@ function collectSetting(prefix, setCodeName, setType, settingsArray) {
},
array: () => {
let temps = [];
if (opts.isOrdeable) {
if (opts.isOrderable) {
temps = $(`#${setCodeName}`).val();
} else {
const sel = $(`#${setCodeName}`).attr("my-editable") === "true" ? "" : ":selected";
@@ -1189,7 +1189,7 @@ function generateFormHtml(settingsData, set, overrideValue, overrideOptions, ori
inputType,
readOnly,
isMultiSelect,
isOrdeable,
isOrderable,
cssClasses,
placeholder,
suffix,
@@ -1225,7 +1225,7 @@ function generateFormHtml(settingsData, set, overrideValue, overrideOptions, ori
switch (elementType) {
case 'select':
const multi = isMultiSelect ? "multiple" : "";
const addCss = isOrdeable ? "select2 select2-hidden-accessible" : "";
const addCss = isOrderable ? "select2 select2-hidden-accessible" : "";
inputHtml += `<select onChange="settingsChanged();${onChange}"
onfocusout="${focusout}"

View File

@@ -590,6 +590,7 @@ function addOptionFromModalInput() {
* A MAC is considered fake if it starts with:
* - "FA:CE" (new synthetic devices)
* - "00:1A" (legacy placeholder devices)
* - "02:" (legacy placeholder devices)
*
* The check is case-insensitive.
*
@@ -600,8 +601,8 @@ function isFakeMac(macAddress) {
// Normalize to lowercase for consistent comparison
macAddress = macAddress.toLowerCase();
// Check if MAC starts with FA:CE or 00:1a
return macAddress.startsWith("fa:ce") || macAddress.startsWith("00:1a");
// Check if MAC starts with FA:CE or 00:1a or 02:
return macAddress.startsWith("fa:ce") || macAddress.startsWith("00:1a") || macAddress.startsWith("02:");
}
@@ -996,7 +997,7 @@ function renderDeviceLink(data, container, useName = false) {
<a href="${badge.url}" target="_blank">
<span class="custom-chip">
<span class="iconPreview">${atob(device.devIcon)}</span>
${useName ? device.devName : data.text}
${useName ? encodeSpecialChars(device.devName) : data.text}
<span>
(${badge.iconHtml})
</span>
@@ -1062,7 +1063,7 @@ function initHoverNodeInfo() {
const html = `
<div>
<b> <div class="iconPreview">${atob(icon)}</div> </b><b class="devName"> ${name}</b><br>
<b> <div class="iconPreview">${atob(icon)}</div> </b><b class="devName"> ${encodeSpecialChars(name)}</b><br>
</div>
<hr/>
<div class="line">

View File

@@ -9059,6 +9059,11 @@ function ajaxConvert( s, response, jqXHR, isSuccess ) {
// Convert response if prev dataType is non-auto and differs from current
} else if ( prev !== "*" && prev !== current ) {
// Mitigate possible XSS vulnerability (gh-2432)
if ( s.crossDomain && current === "script" ) {
continue;
}
// Seek a direct converter
conv = converters[ prev + " " + current ] || converters[ "* " + current ];
@@ -10827,7 +10832,8 @@ if (typeof jQuery === 'undefined') {
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = $(selector === '#' ? [] : selector)
selector = selector === '#' ? [] : selector
var $parent = $(document).find(selector)
if (e) e.preventDefault()
@@ -11223,9 +11229,15 @@ if (typeof jQuery === 'undefined') {
// =================
var clickHandler = function (e) {
var href
var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
var href = $this.attr('href')
if (href) {
href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
}
var target = $this.attr('data-target') || href
var $target = $(document).find(target)
if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
@@ -11415,7 +11427,7 @@ if (typeof jQuery === 'undefined') {
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
return $(document).find(target)
}
@@ -11497,7 +11509,7 @@ if (typeof jQuery === 'undefined') {
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
var $parent = selector && $(document).find(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
@@ -11956,7 +11968,10 @@ if (typeof jQuery === 'undefined') {
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this)
var href = $this.attr('href')
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
var target = $this.attr('data-target') ||
(href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
var $target = $(document).find(target)
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()

View File

@@ -1842,11 +1842,16 @@
return globalLocale;
}
function isLocaleNameSane(name) {
// Prevent names that look like filesystem paths, i.e contain '/' or '\'
return name.match('^[^/\\\\]*$') != null;
}
function loadLocale(name) {
var oldLocale = null;
// TODO: Find a better way to register and load all the locales in Node
if (!locales[name] && (typeof module !== 'undefined') &&
module && module.exports) {
module && module.exports && isLocaleNameSane(name)) {
try {
oldLocale = globalLocale._abbr;
var aliasedRequire = require;
@@ -2294,7 +2299,7 @@
function preprocessRFC2822(s) {
// Remove comments and folding whitespace and replace multiple-spaces with a single space
return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
return s.replace(/\((?:(?!\().)*\)|[\n\t]/gs, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function checkWeekday(weekdayStr, parsedInput, config) {

View File

@@ -2,6 +2,7 @@
//------------------------------------------------------------------------------
// check if authenticated
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/server/db.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/language/lang.php';
?>
@@ -135,7 +136,7 @@
inputType,
readOnly,
isMultiSelect,
isOrdeable,
isOrderable,
cssClasses,
placeholder,
suffix,
@@ -250,7 +251,7 @@
$select.append(
devicesList
.filter(d => d.devMac && d.devName)
.map(d => `<option value="${d.devMac}">${d.devName}</option>`)
.map(d => `<option value="${d.devMac}">${encodeSpecialChars(d.devName)}</option>`)
.join('')
).trigger('change');
}

View File

@@ -10,9 +10,18 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/language/lang.php';
function renderFilterDropdown($headerKey, $columnName, $values) {
// Generate dropdown options
$optionsHtml = '<option value="" selected>All</option>'; // Default "All" option
foreach ($values as $value) {
$escapedValue = htmlspecialchars($value);
$optionsHtml .= '<option value="' . $escapedValue . '">' . $escapedValue . '</option>';
foreach ($values as $item) {
// Support both {value, label} objects and plain strings (backward compat)
if (is_array($item)) {
$val = $item['value'] ?? '';
$label = $item['label'] ?? $val;
} else {
$val = $item;
$label = $item;
}
$escapedValue = htmlspecialchars($val);
$escapedLabel = htmlspecialchars($label);
$optionsHtml .= '<option value="' . $escapedValue . '">' . $escapedLabel . '</option>';
}
// Generate the dropdown HTML

View File

@@ -28,13 +28,13 @@ function initOnlineHistoryGraph() {
res.data.forEach(function(entry) {
var formattedTime = localizeTimestamp(entry.Scan_Date).slice(11, 17);
var formattedTime = localizeTimestamp(entry.scanDate).slice(11, 17);
timeStamps.push(formattedTime);
onlineCounts.push(entry.Online_Devices);
downCounts.push(entry.Down_Devices);
offlineCounts.push(entry.Offline_Devices);
archivedCounts.push(entry.Archived_Devices);
onlineCounts.push(entry.onlineDevices);
downCounts.push(entry.downDevices);
offlineCounts.push(entry.offlineDevices);
archivedCounts.push(entry.archivedDevices);
});
// Call your presenceOverTime function after data is ready

View File

@@ -23,13 +23,12 @@
<!-- Default to the left -->
<!-- NetAlertX footer with url -->
<a href="https://github.com/jokob-sk/NetAlertX" target="_blank">Net<b>Alert</b><sup>x</sup></a>
<a href="https://github.com/netalertx/NetAlertX" target="_blank">Net<b>Alert</b><sup>x</sup></a>
<!-- To the right -->
<div class="pull-right no-hidden-xs">
| <a href="https://gurubase.io/g/netalertx" class="pointer" target="_blank" title="Ask AI"><i class="fa fa-comment-dots fa-flip-horizontal"></i></a>
| <a href="/llms.txt" class="pointer" target="_blank" data-agent-role="mcp-setup" aria-label="Agentic MCP instructions" title="Agent MCP Instructions"><i class="fa fa-robot"></i></a>
| <a href="https://docs.netalertx.com/" 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 fa-bug" title="Report a bug"></i></a>
| <a href="https://github.com/netalertx/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');?>: <span data-plc="build-timestamp"></span>
| Version: <span data-plc="version"></span>

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "لا يمكن إزالة الخاصية المخصصة",
"DAYS_TO_KEEP_EVENTS_description": "عدد الأيام للاحتفاظ بسجلات الأحداث",
"DAYS_TO_KEEP_EVENTS_name": "مدة الاحتفاظ بالأحداث",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "اكتشاف المكونات الإضافية المتاحة",
"DISCOVER_PLUGINS_name": "اكتشاف المكونات الإضافية",
"DevDetail_Children_Title": "علاقات الأطفال",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "قاعدة البيانات مقفلة",
"Gen_NetworkMask": "قناع الشبكة",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "غير متصل",
"Gen_Okay": "موافق",
"Gen_Online": "متصل",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "No es pot eliminar, es necessita una propietat mínim.",
"DAYS_TO_KEEP_EVENTS_description": "Això és una configuració de manteniment. Especifica el nombre de dies que es conservaran els esdeveniments. Els esdeveniments antics s'esborraran periòdicament. També aplica als esdeveniments dels Connectors (Plugins).",
"DAYS_TO_KEEP_EVENTS_name": "Esborrar esdeveniments més vells de",
"DEEP_SLEEP_description": "Redueix l'ús de la CPU ampliant els temps d'espera inactiu entre els cicles de processament. Quan està activat, les exploracions es poden retardar fins a 1 minut i la interfície d'usuari pot ser menys sensible.",
"DEEP_SLEEP_name": "Son profund",
"DISCOVER_PLUGINS_description": "Desactiva aquesta opció per accelerar la inicialització i l'estalvi de configuració. Quan està desactivat, els connectors no es descobreixen, i no podeu afegir nous connectors a la configuració <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Descobreix els plugins",
"DevDetail_Children_Title": "Relacions filles",
@@ -139,7 +141,7 @@
"DevDetail_SessionTable_Duration": "Durada",
"DevDetail_SessionTable_IP": "IP",
"DevDetail_SessionTable_Order": "Ordre",
"DevDetail_Shortcut_CurrentStatus": "Estat actual",
"DevDetail_Shortcut_CurrentStatus": "Estat",
"DevDetail_Shortcut_DownAlerts": "Aturar alertes",
"DevDetail_Shortcut_Presence": "Presència",
"DevDetail_Shortcut_Sessions": "Sessions",
@@ -203,17 +205,17 @@
"Device_MultiEdit_MassActions": "Accions massives:",
"Device_MultiEdit_No_Devices": "Cap dispositiu seleccionat.",
"Device_MultiEdit_Tooltip": "Atenció. Si feu clic a això s'aplicarà el valor de l'esquerra a tots els dispositius seleccionats a dalt.",
"Device_NextScan_Imminent": "",
"Device_NextScan_In": "",
"Device_NoData_Help": "",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
"Device_NextScan_Imminent": "Imminent...",
"Device_NextScan_In": "Proper scan en prop de ",
"Device_NoData_Help": "Si no surten dispositius desprès del scan, comproveu la configuracio de SCAN_SUBNETS i <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">documentacio</a>.",
"Device_NoData_Scanning": "Esperant el primer scan - això pot trigar alguns minuts desprès de la configuració inicial.",
"Device_NoData_Title": "Encara no s'han trobat dispositius",
"Device_NoMatch_Title": "No hi ha cap dispositiu que compleixi el filtre",
"Device_Save_Failed": "Problemes guardant el dispositiu",
"Device_Save_Unauthorized": "Token invàlid - No autoritzat",
"Device_Saved_Success": "S'ha guardat el dispositiu",
"Device_Saved_Unexpected": "Actualització de dispositiu ha retornat una resposta no esperada",
"Device_Scanning": "",
"Device_Scanning": "Escanejant...",
"Device_Searchbox": "Cerca",
"Device_Shortcut_AllDevices": "Els meus dispositius",
"Device_Shortcut_AllNodes": "Tots els nodes",
@@ -232,7 +234,7 @@
"Device_TableHead_FQDN": "FQDN",
"Device_TableHead_Favorite": "Favorit",
"Device_TableHead_FirstSession": "Primera Sessió",
"Device_TableHead_Flapping": "",
"Device_TableHead_Flapping": "Flapping",
"Device_TableHead_GUID": "GUID",
"Device_TableHead_Group": "Grup",
"Device_TableHead_IPv4": "IPv4",
@@ -248,7 +250,7 @@
"Device_TableHead_NetworkSite": "Network Site",
"Device_TableHead_Owner": "Propietari",
"Device_TableHead_ParentRelType": "Tipus de relació",
"Device_TableHead_Parent_MAC": "Node pare de xarxa",
"Device_TableHead_Parent_MAC": "Node pare",
"Device_TableHead_Port": "Port",
"Device_TableHead_PresentLastScan": "Presència",
"Device_TableHead_ReqNicsOnline": "Requereix NICs En línia",
@@ -323,7 +325,7 @@
"Gen_AddDevice": "Afegir dispositiu",
"Gen_Add_All": "Afegeix tot",
"Gen_All_Devices": "Tots els dispositius",
"Gen_Archived": "",
"Gen_Archived": "Arxivat",
"Gen_AreYouSure": "Estàs segur?",
"Gen_Backup": "Executar Backup",
"Gen_Cancel": "Cancel·lar",
@@ -334,16 +336,17 @@
"Gen_Delete": "Esborrar",
"Gen_DeleteAll": "Esborrar tot",
"Gen_Description": "Descripció",
"Gen_Down": "",
"Gen_Down": "Baix",
"Gen_Error": "Error",
"Gen_Filter": "Filtrar",
"Gen_Flapping": "",
"Gen_Flapping": "Flapping",
"Gen_Generate": "Generar",
"Gen_InvalidMac": "Mac address invàlida.",
"Gen_Invalid_Value": "S'ha introduït un valor incorrecte",
"Gen_LockedDB": "ERROR - DB podria estar bloquejada - Fes servir F12 Eines desenvolupament -> Consola o provar-ho més tard.",
"Gen_NetworkMask": "Màscara de xarxa",
"Gen_New": "",
"Gen_New": "Nou",
"Gen_No_Data": "Sense dades",
"Gen_Offline": "Fora de línia",
"Gen_Okay": "Ok",
"Gen_Online": "En línia",
@@ -361,7 +364,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Seleccioneu la vista prèvia",
"Gen_Selected_Devices": "Dispositius seleccionats:",
"Gen_Sleeping": "",
"Gen_Sleeping": "Dormint",
"Gen_Subnet": "Subxarxa",
"Gen_Switch": "Switch",
"Gen_Upd": "Actualitzat correctament",
@@ -591,8 +594,8 @@
"PIALERT_WEB_PROTECTION_name": "Activa l'accés",
"PLUGINS_KEEP_HIST_description": "Quantes entrades de Plugins s'han de mantenir a la història (per Plugin, no per dispositiu).",
"PLUGINS_KEEP_HIST_name": "Història dels Plugins",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "SQLite WAL (Write-Ahead Log) mida màxima en MB abans de desencadenar punts de verificació automàtics. Els valors més baixos (10-20 MB) redueixen l'ús del disc / emmagatzematge, però augmenten l'ús de la CPU durant les exploracions. Els valors més alts (50-100 MB) redueixen els pics de CPU durant les operacions, però poden utilitzar més memòria RAM i espai de disc. Default <code>50 MB</code> saldos ambdós. Útil per a sistemes formats per recursos com dispositius NAS amb targetes SD. Preguntes Freqüents - FAQ.",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "Límit de mida WAL (MB)",
"Plugins_DeleteAll": "Elimina tot (s'ignoraran els filtres)",
"Plugins_Filters_Mac": "Filtre de MAC",
"Plugins_History": "Historial d'Esdeveniments",
@@ -805,4 +808,4 @@
"settings_system_label": "Sistema",
"settings_update_item_warning": "Actualitza el valor sota. Sigues curós de seguir el format anterior. <b>No hi ha validació.</b>",
"test_event_tooltip": "Deseu els canvis primer abans de comprovar la configuració."
}
}

View File

@@ -1,7 +1,7 @@
{
"API_CUSTOM_SQL_description": "",
"API_CUSTOM_SQL_name": "",
"API_TOKEN_description": "",
"API_CUSTOM_SQL_description": "Můžete specifikovat vlastní SQL dotaz, který vygeneruje JSON soubor a následně ho vystaví přes <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\"><code>table_custom_endpoint.json</code> souborový endpoint</a>.",
"API_CUSTOM_SQL_name": "Vlastní endpoint",
"API_TOKEN_description": "API token pro zabezpečenou komunikaci. Vygenerujte ho, nebo zadejte jakoukoliv hodnotu. Je odesílán v hlavičce requestu a použit v <code>SYNC</code> pluginu, GraphQL serveru a dalších API endpointech. Můžete použít API endpointy pro vytvoření vlastních integrací, jak je popsáno v <a href=\"https://docs.netalertx.com/API\" target=\"_blank\">API dokumentaci</a>.",
"API_TOKEN_name": "API token",
"API_display_name": "API",
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
@@ -9,341 +9,344 @@
"About_Exit": "Odhlásit",
"About_Title": "Scanner síťové bezpečnosti a framework pro upozornění",
"AppEvents_AppEventProcessed": "Zpracováno",
"AppEvents_DateTimeCreated": "Zaznamenáno",
"AppEvents_DateTimeCreated": "Zalogováno",
"AppEvents_Extra": "Extra",
"AppEvents_GUID": "",
"AppEvents_Helper1": "",
"AppEvents_Helper2": "",
"AppEvents_Helper3": "",
"AppEvents_GUID": "GUID aplikační události",
"AppEvents_Helper1": "Pomocník 1",
"AppEvents_Helper2": "Pomocník 2",
"AppEvents_Helper3": "Pomocník 3",
"AppEvents_ObjectForeignKey": "Cizí klíč",
"AppEvents_ObjectIndex": "Index",
"AppEvents_ObjectIsArchived": "",
"AppEvents_ObjectIsNew": "",
"AppEvents_ObjectPlugin": "",
"AppEvents_ObjectIsArchived": "Archivováno (dlouhodobě)",
"AppEvents_ObjectIsNew": "Nové (dlouhodobě)",
"AppEvents_ObjectPlugin": "Navázaný Plugin",
"AppEvents_ObjectPrimaryID": "Primární ID",
"AppEvents_ObjectSecondaryID": "Sekundární ID",
"AppEvents_ObjectStatus": "",
"AppEvents_ObjectStatusColumn": "",
"AppEvents_ObjectType": "",
"AppEvents_Plugin": "Zásuvný modul",
"AppEvents_ObjectStatus": "Logovaný stav",
"AppEvents_ObjectStatusColumn": "Stavový sloupec",
"AppEvents_ObjectType": "Typ Objektu",
"AppEvents_Plugin": "Plugin",
"AppEvents_Type": "Typ",
"BACKEND_API_URL_description": "",
"BACKEND_API_URL_name": "",
"BackDevDetail_Actions_Ask_Run": "",
"BackDevDetail_Actions_Not_Registered": "",
"BACKEND_API_URL_description": "Použito pro umožnění komunikace frontendu s backendem. Výchozí hodnota je <code>/server</code> , která by neměla být měněna.",
"BACKEND_API_URL_name": "URL API backendu",
"BackDevDetail_Actions_Ask_Run": "Chcete akci spustit?",
"BackDevDetail_Actions_Not_Registered": "Akce není zaregistrována: ",
"BackDevDetail_Actions_Title_Run": "Spustit akci",
"BackDevDetail_Copy_Ask": "",
"BackDevDetail_Copy_Title": "",
"BackDevDetail_Tools_WOL_error": "",
"BackDevDetail_Tools_WOL_okay": "",
"BackDevices_Arpscan_disabled": "",
"BackDevices_Arpscan_enabled": "",
"BackDevices_Backup_CopError": "",
"BackDevices_Backup_Failed": "",
"BackDevices_Backup_okay": "",
"BackDevices_DBTools_DelDevError_a": "",
"BackDevices_DBTools_DelDevError_b": "",
"BackDevices_DBTools_DelDev_a": "",
"BackDevices_DBTools_DelDev_b": "",
"BackDevices_DBTools_DelEvents": "",
"BackDevices_DBTools_DelEventsError": "",
"BackDevices_DBTools_ImportCSV": "",
"BackDevices_DBTools_ImportCSVError": "",
"BackDevices_DBTools_ImportCSVMissing": "",
"BackDevices_DBTools_Purge": "",
"BackDevices_DBTools_UpdDev": "",
"BackDevices_DBTools_UpdDevError": "",
"BackDevices_DBTools_Upgrade": "",
"BackDevices_DBTools_UpgradeError": "",
"BackDevices_Device_UpdDevError": "",
"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_Children_Title": "",
"DevDetail_Copy_Device_Title": "",
"DevDetail_Copy_Device_Tooltip": "",
"DevDetail_CustomProperties_Title": "",
"DevDetail_CustomProps_reset_info": "",
"DevDetail_DisplayFields_Title": "",
"DevDetail_EveandAl_AlertAllEvents": "",
"DevDetail_EveandAl_AlertDown": "",
"BackDevDetail_Copy_Ask": "Zkopírovat detaily zařízení z výběru (vše na této stránce bude přepsáno)?",
"BackDevDetail_Copy_Title": "Zkopírovat detaily",
"BackDevDetail_Tools_WOL_error": "Příkaz NEBYL proveden.",
"BackDevDetail_Tools_WOL_okay": "Příkaz byl proveden.",
"BackDevices_Arpscan_disabled": "ARP-Scan zakázán",
"BackDevices_Arpscan_enabled": "ARP-Scan povolen",
"BackDevices_Backup_CopError": "Původní databázi se nepodařilo uložit.",
"BackDevices_Backup_Failed": "Záloha byla privedena částečně úspěšně. Archiv nemohl být vytvořen nebo je prázdný.",
"BackDevices_Backup_okay": "Záloha byla provedena úspěšně s novým archivem",
"BackDevices_DBTools_DelDevError_a": "Chyba při odstranění zařízení",
"BackDevices_DBTools_DelDevError_b": "Chyba při odstranění zařízení",
"BackDevices_DBTools_DelDev_a": "Zařízení odstraněno",
"BackDevices_DBTools_DelDev_b": "Zařízení odstraněna",
"BackDevices_DBTools_DelEvents": "Události odstraněny",
"BackDevices_DBTools_DelEventsError": "Chyba při odstraňování událostí",
"BackDevices_DBTools_ImportCSV": "Zařízení z CSV souboru byla úspěšně importována.",
"BackDevices_DBTools_ImportCSVError": "CSV soubor nemohl být importován. Ujistěte se, že je formát správný.",
"BackDevices_DBTools_ImportCSVMissing": "CSV soubor <b>/config/devices.csv</b> nebyl nalezen.",
"BackDevices_DBTools_Purge": "Nejstarší zálohy byly odstraněny",
"BackDevices_DBTools_UpdDev": "Zařízení úspěšně aktualizováno. Hlavní seznam zařízení vyžaduje nějaký čas k obnovení, pokud probíhá scan.",
"BackDevices_DBTools_UpdDevError": "Chyba aktualizace zařízení",
"BackDevices_DBTools_Upgrade": "Databáze byla úspěšně upgradována",
"BackDevices_DBTools_UpgradeError": "Chyba při upgradu databáze",
"BackDevices_Device_UpdDevError": "Chyba při aktualizaci zařízení, zkuste to později. Databáze je pravděpodobně uzamčena z důvodu jiné probíhající úlohy.",
"BackDevices_Restore_CopError": "Původní databázi se nepodařilo uložit.",
"BackDevices_Restore_Failed": "Obnova selhala. Prosím, obnovte zálohu ručně.",
"BackDevices_Restore_okay": "Obnova úspěšně provedena.",
"BackDevices_darkmode_disabled": "Tmavý režim zakázán",
"BackDevices_darkmode_enabled": "Tmavý režim povolen",
"CLEAR_NEW_FLAG_description": "Pokud je povoleno (<code>0</code> je zakázáno), zařízením označeným jako <b>Nové Zařízení</b> bude tento příznak odebrán, pokud časový limit (udaný v hodinách) překročí jejich čas <b>První Session</b>.",
"CLEAR_NEW_FLAG_name": "Odebrat příznak nového",
"CustProps_cant_remove": "Nelze odebrat, je vyžadována alespoň jedna položka.",
"DAYS_TO_KEEP_EVENTS_description": "Toto je nastavení údržby. Určuje počet dní, po které budou záznamy události uchovávány. Všechny starší události budou periodicky odstraněny. Platí také pro Historii Událostí Pluginů.",
"DAYS_TO_KEEP_EVENTS_name": "Odstranit události starší než",
"DEEP_SLEEP_description": "Snižuje využití CPU prodloužením čekacích časů mezi cykly zpracování. Pokud je povoleno, skeny mohou být opožděny až o 1 minutu a UI může být méně responzivní.",
"DEEP_SLEEP_name": "Hluboký spánek",
"DISCOVER_PLUGINS_description": "Zakažte tuto volbu pro urychlení inicializace a ukládání nastavení. Když je volba zakázána, pluginy nejsou vyhledávány a nemůžete tak přidávat nové pluginy do nastavení <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Vyhledat pluginy",
"DevDetail_Children_Title": "Podřízené vazby",
"DevDetail_Copy_Device_Title": "Zkopírovat detaily ze zařízení",
"DevDetail_Copy_Device_Tooltip": "Zkopírovat detaily z vybraného zařízení. Všechno na této stránce bude přepsáno",
"DevDetail_CustomProperties_Title": "Vlastní položky",
"DevDetail_CustomProps_reset_info": "Tímto budou odebrány vlastní položky na tomto zařízení a dojde k resetu na výchozí hodnotu.",
"DevDetail_DisplayFields_Title": "Zobrazit",
"DevDetail_EveandAl_AlertAllEvents": "Hlásit události",
"DevDetail_EveandAl_AlertDown": "Hlásit down",
"DevDetail_EveandAl_Archived": "Archivováno",
"DevDetail_EveandAl_NewDevice": "",
"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_EveandAl_NewDevice": "Nové zařízení",
"DevDetail_EveandAl_NewDevice_Tooltip": "Zobrazí status Nový pro nové zařízení a zahrne je do seznamu s filtrem Nová zařízení. Nemá vliv na notifikace.",
"DevDetail_EveandAl_RandomMAC": "Náhodná MAC",
"DevDetail_EveandAl_ScanCycle": "Skenovat zařízení",
"DevDetail_EveandAl_ScanCycle_a": "Skenovat zařízení",
"DevDetail_EveandAl_ScanCycle_z": "Neskenovat zařízení",
"DevDetail_EveandAl_Skip": "Vynechat opakování notifikací během",
"DevDetail_EveandAl_Title": "Konfigurace notifikací",
"DevDetail_Events_CheckBox": "Skrýt události připojení",
"DevDetail_GoToNetworkNode": "Navigovat na Síťovou stránku uvedeného node.",
"DevDetail_Icon": "Ikona",
"DevDetail_Icon_Descr": "",
"DevDetail_Icon_Descr": "Zadejte název ikony z Font Awesome bez prefixu \"fa-\", nebo s celou class, např. \"fa-brands\", \"fa-apple\", ...",
"DevDetail_Loading": "Načítání…",
"DevDetail_MainInfo_Comments": "Komentáře",
"DevDetail_MainInfo_Favorite": "",
"DevDetail_MainInfo_Group": "",
"DevDetail_MainInfo_Location": "",
"DevDetail_MainInfo_Name": "",
"DevDetail_MainInfo_Network": "",
"DevDetail_MainInfo_Network_Port": "",
"DevDetail_MainInfo_Network_Site": "",
"DevDetail_MainInfo_Network_Title": "",
"DevDetail_MainInfo_Owner": "",
"DevDetail_MainInfo_SSID": "",
"DevDetail_MainInfo_Title": "",
"DevDetail_MainInfo_Type": "",
"DevDetail_MainInfo_Vendor": "",
"DevDetail_MainInfo_mac": "",
"DevDetail_NavToChildNode": "",
"DevDetail_Network_Node_hover": "",
"DevDetail_Network_Port_hover": "",
"DevDetail_Nmap_Scans": "",
"DevDetail_Nmap_Scans_desc": "",
"DevDetail_Nmap_buttonDefault": "",
"DevDetail_Nmap_buttonDefault_text": "",
"DevDetail_Nmap_buttonDetail": "",
"DevDetail_Nmap_buttonDetail_text": "",
"DevDetail_Nmap_buttonFast": "",
"DevDetail_Nmap_buttonFast_text": "",
"DevDetail_Nmap_buttonSkipDiscovery": "",
"DevDetail_Nmap_buttonSkipDiscovery_text": "",
"DevDetail_Nmap_resultsLink": "",
"DevDetail_Owner_hover": "",
"DevDetail_Periodselect_All": "",
"DevDetail_Periodselect_LastMonth": "",
"DevDetail_Periodselect_LastWeek": "",
"DevDetail_Periodselect_LastYear": "",
"DevDetail_Periodselect_today": "",
"DevDetail_Run_Actions_Title": "",
"DevDetail_Run_Actions_Tooltip": "",
"DevDetail_SessionInfo_FirstSession": "",
"DevDetail_SessionInfo_LastIP": "",
"DevDetail_SessionInfo_LastSession": "",
"DevDetail_SessionInfo_StaticIP": "",
"DevDetail_SessionInfo_Status": "",
"DevDetail_SessionInfo_Title": "",
"DevDetail_SessionTable_Additionalinfo": "",
"DevDetail_SessionTable_Connection": "",
"DevDetail_SessionTable_Disconnection": "",
"DevDetail_SessionTable_Duration": "",
"DevDetail_SessionTable_IP": "",
"DevDetail_SessionTable_Order": "",
"DevDetail_Shortcut_CurrentStatus": "",
"DevDetail_Shortcut_DownAlerts": "",
"DevDetail_Shortcut_Presence": "",
"DevDetail_Shortcut_Sessions": "",
"DevDetail_Tab_Details": "",
"DevDetail_Tab_Events": "",
"DevDetail_Tab_EventsTableDate": "",
"DevDetail_Tab_EventsTableEvent": "",
"DevDetail_Tab_EventsTableIP": "",
"DevDetail_Tab_EventsTableInfo": "",
"DevDetail_Tab_Nmap": "",
"DevDetail_Tab_NmapEmpty": "",
"DevDetail_Tab_NmapTableExtra": "",
"DevDetail_Tab_NmapTableHeader": "",
"DevDetail_Tab_NmapTableIndex": "",
"DevDetail_Tab_NmapTablePort": "",
"DevDetail_Tab_NmapTableService": "",
"DevDetail_Tab_NmapTableState": "",
"DevDetail_Tab_NmapTableText": "",
"DevDetail_Tab_NmapTableTime": "",
"DevDetail_Tab_Plugins": "",
"DevDetail_Tab_Presence": "",
"DevDetail_Tab_Sessions": "",
"DevDetail_Tab_Tools": "",
"DevDetail_Tab_Tools_Internet_Info_Description": "",
"DevDetail_Tab_Tools_Internet_Info_Error": "",
"DevDetail_Tab_Tools_Internet_Info_Start": "",
"DevDetail_Tab_Tools_Internet_Info_Title": "",
"DevDetail_Tab_Tools_Nslookup_Description": "",
"DevDetail_Tab_Tools_Nslookup_Error": "",
"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_Traceroute_Error": "",
"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_button_AddIcon": "",
"DevDetail_button_AddIcon_Help": "",
"DevDetail_button_AddIcon_Tooltip": "",
"DevDetail_button_Delete": "",
"DevDetail_button_DeleteEvents": "",
"DevDetail_button_DeleteEvents_Warning": "",
"DevDetail_button_Delete_ask": "",
"DevDetail_button_OverwriteIcons": "",
"DevDetail_button_OverwriteIcons_Tooltip": "",
"DevDetail_button_OverwriteIcons_Warning": "",
"DevDetail_button_Reset": "",
"DevDetail_button_Save": "",
"DeviceEdit_ValidMacIp": "",
"Device_MultiEdit": "",
"Device_MultiEdit_Backup": "",
"Device_MultiEdit_Fields": "",
"Device_MultiEdit_MassActions": "",
"Device_MultiEdit_No_Devices": "",
"Device_MultiEdit_Tooltip": "",
"Device_NextScan_Imminent": "",
"Device_NextScan_In": "",
"Device_NoData_Help": "",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
"Device_Save_Failed": "",
"Device_Save_Unauthorized": "",
"Device_Saved_Success": "",
"Device_Saved_Unexpected": "",
"Device_Scanning": "",
"Device_Searchbox": "",
"Device_Shortcut_AllDevices": "",
"Device_Shortcut_AllNodes": "",
"Device_Shortcut_Archived": "",
"Device_Shortcut_Connected": "",
"Device_Shortcut_Devices": "",
"Device_Shortcut_DownAlerts": "",
"Device_Shortcut_DownOnly": "",
"Device_Shortcut_Favorites": "",
"Device_Shortcut_NewDevices": "",
"Device_Shortcut_OnlineChart": "",
"Device_Shortcut_Unstable": "",
"Device_TableHead_AlertDown": "",
"Device_TableHead_Connected_Devices": "",
"Device_TableHead_CustomProps": "",
"Device_TableHead_FQDN": "",
"Device_TableHead_Favorite": "",
"Device_TableHead_FirstSession": "",
"Device_TableHead_Flapping": "",
"Device_TableHead_GUID": "",
"Device_TableHead_Group": "",
"Device_TableHead_IPv4": "",
"Device_TableHead_IPv6": "",
"Device_TableHead_Icon": "",
"Device_TableHead_LastIP": "",
"Device_TableHead_LastIPOrder": "",
"Device_TableHead_LastSession": "",
"Device_TableHead_Location": "",
"Device_TableHead_MAC": "",
"Device_TableHead_MAC_full": "",
"Device_TableHead_Name": "",
"Device_TableHead_NetworkSite": "",
"Device_TableHead_Owner": "",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_Parent_MAC": "",
"Device_TableHead_Port": "",
"Device_TableHead_PresentLastScan": "",
"Device_TableHead_ReqNicsOnline": "",
"Device_TableHead_RowID": "",
"Device_TableHead_Rowid": "",
"Device_TableHead_SSID": "",
"Device_TableHead_SourcePlugin": "",
"Device_TableHead_Status": "",
"Device_TableHead_SyncHubNodeName": "",
"Device_TableHead_Type": "",
"Device_TableHead_Vendor": "",
"Device_TableHead_Vlan": "",
"Device_Table_Not_Network_Device": "",
"Device_Table_info": "",
"Device_Table_nav_next": "",
"Device_Table_nav_prev": "",
"Device_Tablelenght": "",
"Device_Tablelenght_all": "",
"Device_Title": "",
"Devices_Filters": "",
"ENABLE_PLUGINS_description": "",
"ENABLE_PLUGINS_name": "",
"ENCRYPTION_KEY_description": "",
"ENCRYPTION_KEY_name": "",
"Email_display_name": "",
"Email_icon": "",
"Events_Loading": "",
"Events_Periodselect_All": "",
"Events_Periodselect_LastMonth": "",
"Events_Periodselect_LastWeek": "",
"Events_Periodselect_LastYear": "",
"Events_Periodselect_today": "",
"Events_Searchbox": "",
"Events_Shortcut_AllEvents": "",
"Events_Shortcut_DownAlerts": "",
"Events_Shortcut_Events": "",
"Events_Shortcut_MissSessions": "",
"Events_Shortcut_NewDevices": "",
"Events_Shortcut_Sessions": "",
"Events_Shortcut_VoidSessions": "",
"Events_TableHead_AdditionalInfo": "",
"Events_TableHead_Connection": "",
"Events_TableHead_Date": "",
"Events_TableHead_Device": "",
"Events_TableHead_Disconnection": "",
"Events_TableHead_Duration": "",
"Events_TableHead_DurationOrder": "",
"Events_TableHead_EventType": "",
"Events_TableHead_IP": "",
"Events_TableHead_IPOrder": "",
"Events_TableHead_Order": "",
"Events_TableHead_Owner": "",
"Events_TableHead_PendingAlert": "",
"Events_Table_info": "",
"Events_Table_nav_next": "",
"Events_Table_nav_prev": "",
"Events_Tablelenght": "",
"Events_Tablelenght_all": "",
"Events_Title": "",
"FakeMAC_hover": "",
"FieldLock_Error": "",
"FieldLock_Lock_Tooltip": "",
"FieldLock_Locked": "",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_Source_Label": "",
"FieldLock_Unlock_Tooltip": "",
"FieldLock_Unlocked": "",
"GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "",
"Gen_Action": "",
"Gen_Add": "",
"Gen_AddDevice": "",
"DevDetail_MainInfo_Favorite": "Oblíbené",
"DevDetail_MainInfo_Group": "Skupina",
"DevDetail_MainInfo_Location": "Umístění",
"DevDetail_MainInfo_Name": "Název",
"DevDetail_MainInfo_Network": "<i class=\"fa fa-server\"></i> Node (MAC)",
"DevDetail_MainInfo_Network_Port": "<i class=\"fa fa-ethernet\"></i> Port",
"DevDetail_MainInfo_Network_Site": "Site",
"DevDetail_MainInfo_Network_Title": "Síťové detaily",
"DevDetail_MainInfo_Owner": "Vlastník",
"DevDetail_MainInfo_SSID": "SSID",
"DevDetail_MainInfo_Title": "Informace o zařízení",
"DevDetail_MainInfo_Type": "Typ",
"DevDetail_MainInfo_Vendor": "Výrobce",
"DevDetail_MainInfo_mac": "MAC",
"DevDetail_NavToChildNode": "Otevřít podřízený node",
"DevDetail_Network_Node_hover": "Vyberte nadřazené síťové zařízení, ke kterému je toto zařízení připojeno, pro sestavení Síťového stromu.",
"DevDetail_Network_Port_hover": "Port nadřazeného síťového zařízení, ke kterému je toto zařízení připojeno. Pokud je ponechán prázdný, zobrazí se u zařízení WiFi ikona v Síťovém stromu.",
"DevDetail_Nmap_Scans": "Manuální NMAP scany",
"DevDetail_Nmap_Scans_desc": "Tady můžete spustit manuální NMAP scany. Můžete také naplánovat pravidelné automatické NMAP scany přes plugin Služby & Porty (NMAP). Podívejte se do <a href=\"https://github.com/netalertx/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Dokumentace</a> pro více informací",
"DevDetail_Nmap_buttonDefault": "Výchozí scan",
"DevDetail_Nmap_buttonDefault_text": "Výchozí scan: NAMP scanuje prvních 1000 portů pro každý požadovaný protokol. Toto zahrnuje 93 % TCP portů a 49 % UDP portů. (přibližně 5 sekund)",
"DevDetail_Nmap_buttonDetail": "Podrobný scan",
"DevDetail_Nmap_buttonDetail_text": "Podrobný scan: Výchozí scan s povolenou detekcí OS, detekcí verze, scanování skriptů a traceroute (až 30 sekund nebo déle)",
"DevDetail_Nmap_buttonFast": "Rychlý scan",
"DevDetail_Nmap_buttonFast_text": "Rychlý scan: Scanovat pár portů (100) oproti výchozímu scanu (pár sekund)",
"DevDetail_Nmap_buttonSkipDiscovery": "Přeskočit prohledání hostitele",
"DevDetail_Nmap_buttonSkipDiscovery_text": "Přeskočit vyhledávání hostitelů (parametr \"-Pn\"): Výchozí scan bez prohledání hostitele",
"DevDetail_Nmap_resultsLink": "Tuto stránku můžete opustit po spuštění scanu. Výsledky budou k dispozici také v souboru <code>app_front.log</code> .",
"DevDetail_Owner_hover": "Kdo vlastní toto zařízení. Nepovinná textová položka.",
"DevDetail_Periodselect_All": "Všechny informace",
"DevDetail_Periodselect_LastMonth": "Minulý měsíc",
"DevDetail_Periodselect_LastWeek": "Minulý týden",
"DevDetail_Periodselect_LastYear": "Minulý rok",
"DevDetail_Periodselect_today": "Dnes",
"DevDetail_Run_Actions_Title": "<i class=\"fa fa-play\"></i> Spustit akci na zařízení",
"DevDetail_Run_Actions_Tooltip": "Spustit akci na vybraném zařízení.",
"DevDetail_SessionInfo_FirstSession": "Prví sezení",
"DevDetail_SessionInfo_LastIP": "Poslední IP",
"DevDetail_SessionInfo_LastSession": "Naposledy offline",
"DevDetail_SessionInfo_StaticIP": "Statická IP",
"DevDetail_SessionInfo_Status": "Stav",
"DevDetail_SessionInfo_Title": "Informace o sezení",
"DevDetail_SessionTable_Additionalinfo": "Další informace",
"DevDetail_SessionTable_Connection": "Připojení",
"DevDetail_SessionTable_Disconnection": "Odpojení",
"DevDetail_SessionTable_Duration": "Trvání",
"DevDetail_SessionTable_IP": "IP",
"DevDetail_SessionTable_Order": "Pořadí",
"DevDetail_Shortcut_CurrentStatus": "Stav",
"DevDetail_Shortcut_DownAlerts": "Down alerty",
"DevDetail_Shortcut_Presence": "Výskyt",
"DevDetail_Shortcut_Sessions": "Sezení",
"DevDetail_Tab_Details": "Detaily",
"DevDetail_Tab_Events": "Události",
"DevDetail_Tab_EventsTableDate": "Datum",
"DevDetail_Tab_EventsTableEvent": "Druh události",
"DevDetail_Tab_EventsTableIP": "IP",
"DevDetail_Tab_EventsTableInfo": "Další informace",
"DevDetail_Tab_Nmap": "<i class=\"fa fa-ethernet\"></i> NMAP",
"DevDetail_Tab_NmapEmpty": "Pomocí NMAP nebyly na tomto zařízení nalezeny žádné porty.",
"DevDetail_Tab_NmapTableExtra": "Extra",
"DevDetail_Tab_NmapTableHeader": "Výsledky naplánovaných scanů",
"DevDetail_Tab_NmapTableIndex": "Index",
"DevDetail_Tab_NmapTablePort": "Port",
"DevDetail_Tab_NmapTableService": "Služba",
"DevDetail_Tab_NmapTableState": "Stav",
"DevDetail_Tab_NmapTableText": "Nastavte plán v <a href=\"/settings.php#NMAP_ACTIVE\">Nastavení</a>",
"DevDetail_Tab_NmapTableTime": "Čas",
"DevDetail_Tab_Plugins": "Pluginy",
"DevDetail_Tab_Presence": "Výskyt",
"DevDetail_Tab_Sessions": "Sezení",
"DevDetail_Tab_Tools": "Nástroje",
"DevDetail_Tab_Tools_Internet_Info_Description": "Nástroj Internetové informace zobrazuje informace o internetovém připojení jako je IP adresa, město, stát, kód oblasti a časovou zónu.",
"DevDetail_Tab_Tools_Internet_Info_Error": "Vyskytla se chyba",
"DevDetail_Tab_Tools_Internet_Info_Start": "Spustit Internetové informace",
"DevDetail_Tab_Tools_Internet_Info_Title": "Internetové informace",
"DevDetail_Tab_Tools_Nslookup_Description": "Nslookup je nástroj příkazové řádky používaný pro dotazování doménového jmenného systému (DNS). DNS je systém, který překládá doménové názvy, třeba www.google.com, na IP adresy, třeba na 172.217.0.142.",
"DevDetail_Tab_Tools_Nslookup_Error": "Chyba: IP adresa není platná",
"DevDetail_Tab_Tools_Nslookup_Start": "Spustit Nslookup",
"DevDetail_Tab_Tools_Nslookup_Title": "Nslookup",
"DevDetail_Tab_Tools_Speedtest_Description": "Nástroj Sppedtest měří rychlost stahování, rychlost nahrávání a latenci internetového připojení.",
"DevDetail_Tab_Tools_Speedtest_Start": "Spustit Speedtest",
"DevDetail_Tab_Tools_Speedtest_Title": "Online Speedtest",
"DevDetail_Tab_Tools_Traceroute_Description": "Traceroute je sířový diagnostický příklad používaný pro trasování cesty, kterou datové packety putují od jednoho hostitele k druhému.<br><br>Příkaz používá Internet Control Message Protocol (ICMP) pro posílání packetů procházejícím nodů na cestě, kde každý takový node odpovídá pomocí ICMP time-out (TTL timed out) packetu.<br><br>Výstup traceroute příkazu může být použit pro diagnostiku síťových problémů, jako třeba prodlevy, packetové ztráty a blokované trasy.<br><br>Může být také použít k identifikaci umístění procházejícího node v síti.",
"DevDetail_Tab_Tools_Traceroute_Error": "Chyba: IP adresa není platná",
"DevDetail_Tab_Tools_Traceroute_Start": "Spustit Traceroute",
"DevDetail_Tab_Tools_Traceroute_Title": "Traceroute",
"DevDetail_Tools_WOL": "Odeslat WOL příkaz na ",
"DevDetail_Tools_WOL_noti": "Wake-On-LAN",
"DevDetail_Tools_WOL_noti_text": "Příkaz Wake-On-LAN je odelsán na broadcastovou adresu. Pokud není cíl ve stejném subnetu/VLAN jako NetAlertX, cílové zařízení neodpoví.",
"DevDetail_Type_hover": "Typ zařízení. Pokud vyberete jakýkoliv typ předdefinovaných zařízení (např. AP, Firewall, Router, Switch, ...), zobrazí se v Síťovém stromu jako nadřazený síťový nod.",
"DevDetail_Vendor_hover": "Výrobce by měl být auto-detekován. Můžete ho přepsat, nebo přidat vlastní hodnotu.",
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> Wake-On-LAN",
"DevDetail_button_AddIcon": "Přidat novou ikonu",
"DevDetail_button_AddIcon_Help": "Vložte SVG HTML tag, nebo HTML tag ikony z Font Awesome. Přečtěte si <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">Dokumentaci k ikonám</a> pro více informací.",
"DevDetail_button_AddIcon_Tooltip": "Přidat novou ikonu k tomuto zařízení, která není mezi dostupnými ikonami ve výběru.",
"DevDetail_button_Delete": "Odstranit zařízení",
"DevDetail_button_DeleteEvents": "Odstranit události",
"DevDetail_button_DeleteEvents_Warning": "Opravdu chcete odstranit všechny události tohoto zařízení?<br><br>(toto odstraní všechno ze záložky <b>Historie událostí</b> a také ze záložky <b>Sezení</b> a může pomoci se stálými (trvalými) notifikacemi)",
"DevDetail_button_Delete_ask": "Opravdu chcete odstranit toto zařízení? Místo toho ho můžete archivovat.",
"DevDetail_button_OverwriteIcons": "Přepsat ikony",
"DevDetail_button_OverwriteIcons_Tooltip": "Přepsat ikony všech zařízení stejného typu zařízení",
"DevDetail_button_OverwriteIcons_Warning": "Opravdu chcete přepsat všechny ikony zařízení se stejným typem zařízení ikonou tohoto zařízení?",
"DevDetail_button_Reset": "Resetovat změny",
"DevDetail_button_Save": "Uložit",
"DeviceEdit_ValidMacIp": "Zadejte platnou <b>MAC</b> a <b>IP</b> adresu.",
"Device_MultiEdit": "Multi-editace",
"Device_MultiEdit_Backup": "Opatrně, zadání nesprávných hodnot níže poškodí vaše nastavení. Zálohujte si prosím nejdřív vaši databázi nebo Seznam zařízení (<a href=\"#\" onclick=\"ExportCSV()\">kliknutím stáhnout <i class=\"fa-solid fa-download fa-bounce\"></i></a>). Přečtěte si, jak obnovit Zařízení z tohoto souboru v <a href=\"https://docs.netalertx.com/BACKUPS#scenario-2-corrupted-database\" target=\"_blank\">Dokumentaci zálohování</a>. Pro pokračování uložení změn kliknéte na ikonu <b>Uložit<i class=\"fa-solid fa-save\"></i></b> u každé položky, kterou chcete aktualizovat.",
"Device_MultiEdit_Fields": "Upravit položky:",
"Device_MultiEdit_MassActions": "Hromadné akce:",
"Device_MultiEdit_No_Devices": "Zařízení nevybráno.",
"Device_MultiEdit_Tooltip": "Opatrně. Kliknutím na toto se použije hodnota vlevo všem zařízení dole.",
"Device_NextScan_Imminent": "Bezprostřední...",
"Device_NextScan_In": "Další scan za ",
"Device_NoData_Help": "Pokud se zařízení po skenování nezobrazí, zkontrolujte nastavení SCAN_SUBNETS a <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">dokumentaci</a>.",
"Device_NoData_Scanning": "Čekání na první sken - toto může trvat několik minut po počátečním nastavení.",
"Device_NoData_Title": "Žádná zařízení zatím nenalezena",
"Device_NoMatch_Title": "Žádná zařízení neodpovídají aktuálnímu fultru",
"Device_Save_Failed": "Chyba při uložení zařízení",
"Device_Save_Unauthorized": "Neautorizováno - neplatný API token",
"Device_Saved_Success": "Zařízení úspěšně uloženo",
"Device_Saved_Unexpected": "Aktualizace zařízení vrátila neočekávanou odpověď",
"Device_Scanning": "Skenování...",
"Device_Searchbox": "Hledat",
"Device_Shortcut_AllDevices": "Moje zařízení",
"Device_Shortcut_AllNodes": "Všechny nody",
"Device_Shortcut_Archived": "Archivované",
"Device_Shortcut_Connected": "Připojené",
"Device_Shortcut_Devices": "Zařízení",
"Device_Shortcut_DownAlerts": "Nedostupné & Offline",
"Device_Shortcut_DownOnly": "Nedostupné",
"Device_Shortcut_Favorites": "Oblíbené",
"Device_Shortcut_NewDevices": "Nová zařízení",
"Device_Shortcut_OnlineChart": "Výskyt zařízení",
"Device_Shortcut_Unstable": "Nestabilní",
"Device_TableHead_AlertDown": "Upozornění nedostupnosti",
"Device_TableHead_Connected_Devices": "Spojení",
"Device_TableHead_CustomProps": "Vlastnosti / Akce",
"Device_TableHead_FQDN": "FQDN",
"Device_TableHead_Favorite": "Oblíbené",
"Device_TableHead_FirstSession": "První session",
"Device_TableHead_Flapping": "Nestálé",
"Device_TableHead_GUID": "GUID",
"Device_TableHead_Group": "Skupina",
"Device_TableHead_IPv4": "IPv4",
"Device_TableHead_IPv6": "IPv6",
"Device_TableHead_Icon": "Ikona",
"Device_TableHead_LastIP": "Poslední IP",
"Device_TableHead_LastIPOrder": "Poslední IP v pořadí",
"Device_TableHead_LastSession": "Naposledy offline",
"Device_TableHead_Location": "Lokace",
"Device_TableHead_MAC": "Náhodná MAC",
"Device_TableHead_MAC_full": "Celá MAC",
"Device_TableHead_Name": "Název",
"Device_TableHead_NetworkSite": "Umístění v síti",
"Device_TableHead_Owner": "Vlastník",
"Device_TableHead_ParentRelType": "Vztah",
"Device_TableHead_Parent_MAC": "Nadřazený node",
"Device_TableHead_Port": "Port",
"Device_TableHead_PresentLastScan": "Výskyt",
"Device_TableHead_ReqNicsOnline": "Vyžadovat NICs online",
"Device_TableHead_RowID": "ID řádku",
"Device_TableHead_Rowid": "ID řádku",
"Device_TableHead_SSID": "SSID",
"Device_TableHead_SourcePlugin": "Zdrojový plugin",
"Device_TableHead_Status": "Stav",
"Device_TableHead_SyncHubNodeName": "Sync node",
"Device_TableHead_Type": "Typ",
"Device_TableHead_Vendor": "Výrobce",
"Device_TableHead_Vlan": "VLAN",
"Device_Table_Not_Network_Device": "Nenakonfigurováno jako síťové zařízení",
"Device_Table_info": "Zobrazeno _START_ to _END_ of _TOTAL_ záznamů",
"Device_Table_nav_next": "Další",
"Device_Table_nav_prev": "Předchozí",
"Device_Tablelenght": "Zobrazit položky _MENU_",
"Device_Tablelenght_all": "Vše",
"Device_Title": "Zařízení",
"Devices_Filters": "Filtry",
"ENABLE_PLUGINS_description": "Povoluje funkcionalitu <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">pluginů</a>. Načítání pluginů vyžaduje více hardwarových prostředků, takže je bude lepší zakázat na výkonově slabším systému.",
"ENABLE_PLUGINS_name": "Povolit pluginy",
"ENCRYPTION_KEY_description": "Klíč šifrování dat.",
"ENCRYPTION_KEY_name": "Šifrovací klíč",
"Email_display_name": "Email",
"Email_icon": "<i class=\"fa fa-at\"></i>",
"Events_Loading": "Načítání…",
"Events_Periodselect_All": "Všechny informace",
"Events_Periodselect_LastMonth": "Minulý měsíc",
"Events_Periodselect_LastWeek": "Minulý týden",
"Events_Periodselect_LastYear": "Minulý rok",
"Events_Periodselect_today": "Dnes",
"Events_Searchbox": "Vyhledat",
"Events_Shortcut_AllEvents": "Všechny události",
"Events_Shortcut_DownAlerts": "Výzvy nedostupnosti",
"Events_Shortcut_Events": "Události",
"Events_Shortcut_MissSessions": "Chybějící sessions",
"Events_Shortcut_NewDevices": "Nová zařízení",
"Events_Shortcut_Sessions": "Sessions",
"Events_Shortcut_VoidSessions": "Povolená sessions",
"Events_TableHead_AdditionalInfo": "Další informace",
"Events_TableHead_Connection": "Spojení",
"Events_TableHead_Date": "Datum",
"Events_TableHead_Device": "Zařízení",
"Events_TableHead_Disconnection": "Odpojení",
"Events_TableHead_Duration": "Trvání",
"Events_TableHead_DurationOrder": "Pořadí trvání",
"Events_TableHead_EventType": "Druh události",
"Events_TableHead_IP": "IP",
"Events_TableHead_IPOrder": "Pořadí IP",
"Events_TableHead_Order": "Pořadí",
"Events_TableHead_Owner": "Vlastník",
"Events_TableHead_PendingAlert": "Čekající výzva",
"Events_Table_info": "Zobrazení položek _START_ to _END_ of _TOTAL_",
"Events_Table_nav_next": "Další",
"Events_Table_nav_prev": "Předchozí",
"Events_Tablelenght": "Zobrazení položek _MENU_",
"Events_Tablelenght_all": "Vše",
"Events_Title": "Události",
"FakeMAC_hover": "Toto zařízení má falešnou MAC adresu",
"FieldLock_Error": "Chyba při aktualizaci stavu zámku položky",
"FieldLock_Lock_Tooltip": "Zamknout položku (zabrání přepsání pluginuem)",
"FieldLock_Locked": "Položka uzamčena",
"FieldLock_SaveBeforeLocking": "Uložit změny před uzamčením",
"FieldLock_Source_Label": "Zdroj ",
"FieldLock_Unlock_Tooltip": "Odemknout položku (povolit přepsání pluginem)",
"FieldLock_Unlocked": "Položka odemčena",
"GRAPHQL_PORT_description": "Číslo portu GraphQL serveru. Ujistěte se, že je port unikátně přes všechny vaše aplikace na tomto hostiteli a NetAlertX instance.",
"GRAPHQL_PORT_name": "Port GraphQL",
"Gen_Action": "Akce",
"Gen_Add": "Přidat",
"Gen_AddDevice": "Přidat zařízení",
"Gen_Add_All": "Přidat vše",
"Gen_All_Devices": "Všechna zařízení",
"Gen_Archived": "",
"Gen_Archived": "Archivováno",
"Gen_AreYouSure": "Jste si jistý?",
"Gen_Backup": "Spustit zálohování",
"Gen_Cancel": "Zrušit",
"Gen_Change": "Změnit",
"Gen_Copy": "Spustit",
"Gen_CopyToClipboard": "",
"Gen_CopyToClipboard": "Zkopírovat do schránky",
"Gen_DataUpdatedUITakesTime": "OK - může zabrat chvíli aktualizovat rozhraní, pokud běží scan.",
"Gen_Delete": "Smazat",
"Gen_DeleteAll": "Smazat vše",
"Gen_Description": "Popis",
"Gen_Down": "",
"Gen_Down": "Nedostupné",
"Gen_Error": "Chyba",
"Gen_Filter": "Filtr",
"Gen_Flapping": "",
"Gen_Flapping": "Nestabilní",
"Gen_Generate": "Vygenerovat",
"Gen_InvalidMac": "",
"Gen_Invalid_Value": "",
"Gen_InvalidMac": "Neplatná MAC adresa.",
"Gen_Invalid_Value": "Zadána neplatná hodnota",
"Gen_LockedDB": "CHYBA - Databáze je možná zamčená - Zkontrolujte F12 -> Nástroje pro vývojáře -> Konzole. nebo to zkuste později.",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_NetworkMask": "Maska sítě",
"Gen_New": "Nový",
"Gen_No_Data": "Bez dat",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -361,8 +364,8 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Vybrat na náhled",
"Gen_Selected_Devices": "Vybraná zařízení:",
"Gen_Sleeping": "",
"Gen_Subnet": "",
"Gen_Sleeping": "Spící",
"Gen_Subnet": "Subnet",
"Gen_Switch": "Přepnout",
"Gen_Upd": "Úspěšně aktualizováno",
"Gen_Upd_Fail": "Aktualizace se nezdařila",
@@ -370,96 +373,96 @@
"Gen_Update_Value": "Aktualizovat hodnotu",
"Gen_ValidIcon": "<i class=\"fa-solid fa-chevron-right \"></i>",
"Gen_Warning": "Upozornění",
"Gen_Work_In_Progress": "",
"Gen_create_new_device": "",
"Gen_create_new_device_info": "",
"General_display_name": "",
"General_icon": "",
"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": "",
"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_InitCheck": "",
"Maintenance_InitCheck_Checking": "",
"Maintenance_InitCheck_QuickSetupGuide": "",
"Maintenance_InitCheck_Success": "",
"Maintenance_ReCheck": "",
"Maintenance_Running_Version": "",
"Maintenance_Status": "",
"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": "",
"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_UnlockFields": "",
"Maintenance_Tool_UnlockFields_noti": "",
"Maintenance_Tool_UnlockFields_noti_text": "",
"Maintenance_Tool_UnlockFields_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_clearSourceFields_selected": "",
"Maintenance_Tool_clearSourceFields_selected_noti": "",
"Maintenance_Tool_clearSourceFields_selected_text": "",
"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": "",
"Gen_Work_In_Progress": "Rozpracováno, ideální čas pro zpětnou vazbu na https://github.com/netalertx/NetAlertX/issues",
"Gen_create_new_device": "Nové zařízení",
"Gen_create_new_device_info": "Zařízení jsou vyhledávána pomocí <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">pluginů</a>. V určitých případech je však potřeba přidat zařízení ručně. Chcete-li prozkoumat konkrétní scénáře, podívejte se do <a target=\"_blank\" href=\"https://docs.netalertx.com/REMOTE_NETWORKS\">Dokumentace vzdálených sítí</a>.",
"General_display_name": "Základní",
"General_icon": "<i class=\"fa fa-gears\"></i>",
"HRS_TO_KEEP_NEWDEV_description": "Toto je údržbářské nastavení <b>ODSTRANĚNÍ zařízení</b>. Pokud je povoleno (<code>0</code> zakázáno), zařízení označená jako <b>Nové zařízení</b> budou odstraněna, pokud je jejich čas <b>První session</b> starší, než uvedené hodiny v tomto nastavení. Použijte toto nastavení, pokud chcete automaticky mazat <b>Nová zařízení</b> po uplynutí <code>X</code> hodin.",
"HRS_TO_KEEP_NEWDEV_name": "Odstranit nová zařízení po",
"HRS_TO_KEEP_OFFDEV_description": "Toto je údržbářské nastavení <b>ODSTRANĚNÍ zařízení</b>. Pokud je povoleno (<code>0</code> zakázáno), zařízení <b>Offline</b> s jejich datumem <b>Posledního připojení</b> starším, než uvedené hodiny v tomto nastavení, budou odstraněna. Použijte toto nastavení, pokud chcete automaticky mazat <b>Offline zařízení</b> po uplynutí <code>X</code> hodin offline.",
"HRS_TO_KEEP_OFFDEV_name": "Odstranit offline zařízení po",
"LOADED_PLUGINS_description": "Které pluginy načíst. Přidávání pluginů může aplikaci zpomalit. Přečtěte si více o pluginech, které musí být povoleny, o typech, nebo o scannovacích moźnostech v <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">dokumentaci pluginů</a>. Odpojené pluginy ztratí vaše nastavení. Pouze <code>deaktivované</code> pluginy mohou být odpojeny.",
"LOADED_PLUGINS_name": "Načtené pluginy",
"LOG_LEVEL_description": "Toto nastavení způsobí více detailní logování. To je užitečné pro ladění událostí zapisujících do databáze.",
"LOG_LEVEL_name": "Vypisovat dodatečné logování",
"Loading": "Načítání…",
"Login_Box": "Zadejte vaše heslo",
"Login_Default_PWD": "Výchozí heslo \"123456\" je stále aktivní.",
"Login_Info": "Hesla jsou nastavována přes Set Password plugin. Zkontrolujte <a target=\"_blank\" href=\"https://github.com/netalertx/NetAlertX/tree/main/front/plugins/set_password\">dokumentaci SETPWD</a>, pokud máte potíže s přihlášením.",
"Login_Psw-box": "Heslo",
"Login_Psw_alert": "Upozornění na heslo!",
"Login_Psw_folder": "v config složce.",
"Login_Psw_new": "Nové heslo",
"Login_Psw_run": "Pro změnu hesla spusťte:",
"Login_Remember": "Zapamatujte si",
"Login_Remember_small": "(platné 7 dní)",
"Login_Submit": "Přihlásit",
"Login_Toggle_Alert_headline": "Upozornění na heslo!",
"Login_Toggle_Info": "Informace o hesle",
"Login_Toggle_Info_headline": "Informace o hesle",
"Maint_PurgeLog": "Vyprázdnit log",
"Maint_RestartServer": "Restartovat server",
"Maint_Restart_Server_noti_text": "Opravdu chcete restartovat backendový server? Toto může způsobit nekonzistence v aplikaci. Nejprve si zazálohujte vaše nastavení. <br/><br/> Poznámka: Toto může trvat několik minut.",
"Maintenance_InitCheck": "Inicializační kontrola",
"Maintenance_InitCheck_Checking": "Kontroluje se…",
"Maintenance_InitCheck_QuickSetupGuide": "Ujistěte se, že jste postupovali podle <a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">příručky pro rychlé nastavení</a>.",
"Maintenance_InitCheck_Success": "Aplikace zinicializována úspěšně!",
"Maintenance_ReCheck": "Opakovat pokus",
"Maintenance_Running_Version": "Nainstalovaná verze",
"Maintenance_Status": "Stav",
"Maintenance_Title": "Nástroje údržby",
"Maintenance_Tool_DownloadConfig": "Export nastavení",
"Maintenance_Tool_DownloadConfig_text": "Stáhněte si kompletní zálohu vašeho nastavení a konfigurace uloženou v souboru <code>app.conf</code> .",
"Maintenance_Tool_DownloadWorkflows": "Export workflows",
"Maintenance_Tool_DownloadWorkflows_text": "Stáhněte si kompletní zálohu vašich workflows uloženou v soboru <code>workflows.json</code>.",
"Maintenance_Tool_ExportCSV": "Export zařízení (CSV)",
"Maintenance_Tool_ExportCSV_noti": "Export zařízení (CSV)",
"Maintenance_Tool_ExportCSV_noti_text": "Opravdu chcete vygenerovat CSV soubor?",
"Maintenance_Tool_ExportCSV_text": "Vygenerovat CSV (čárkami oddělené hodnoty) soubor obsahující seznam zařízení zahrnující síťové vazby mezi síťovými nody a připojenými zařízeními. Toto můžete vyvolat také povolením pluginu <a href=\"settings.php#CSVBCKP_header\">CSV Backup</a>.",
"Maintenance_Tool_ImportCSV": "Import zařízení (CSV)",
"Maintenance_Tool_ImportCSV_noti": "Import zařízení (CSV)",
"Maintenance_Tool_ImportCSV_noti_text": "Opravdu chcete importovat CSV soubor? Toto kompletně <b>přepíše</b> zařízení ve vaší databázi.",
"Maintenance_Tool_ImportCSV_text": "Než začnete používat tuto funkci, vytvořte si raději zálohu. Import CSV (čárkou oddělené hodnoty) souboru obsahujícího seznam zařízení, zahrnující síťové vazby mezi síťovými nody a připojenými zařízeními. Abyste toto provedli, umístěte CSV soubor s názvem <b>devices.csv</b> do složky <b>/config</b>.",
"Maintenance_Tool_ImportConfig_noti": "Import nastavení (app.conf)",
"Maintenance_Tool_ImportPastedCSV": "Import zařízení (CSV) (paste)",
"Maintenance_Tool_ImportPastedCSV_noti_text": "Opravdu chcete importovat vložené CSV? Toto kompletně <b>přepíše</b> zařízení ve vaší databázi.",
"Maintenance_Tool_ImportPastedCSV_text": "Před použitím této funkce raději udělejte zálohu. Importování CSV (čárkou oddělené hodnoty) souboru obsahující seznam zařízení zahrnující síťově vazby mezi síťovými nody a připojenými zařízeními.",
"Maintenance_Tool_ImportPastedConfig": "Import nastavení (paste)",
"Maintenance_Tool_ImportPastedConfig_noti_text": "Opravdu chcete importovat vložené konfigurační nastavení? Toto kompletně <b>přepíše</b> soubor <code>app.conf</code>.",
"Maintenance_Tool_ImportPastedConfig_text": "Importovat soubor <code>app.conf</code> obsahující veškerá aplikační nastavení. Doporučujeme zálohovat stávající <code>app.conf</code> pomocí <b>Exportu nastavení</b>.",
"Maintenance_Tool_UnlockFields": "Odemknout položky zařízení",
"Maintenance_Tool_UnlockFields_noti": "Odemknout položky zařízení",
"Maintenance_Tool_UnlockFields_noti_text": "Opravdu chcete vymazat všechny zdrojové hodnoty (UZAMČENÉ/UŽIVATELSKÉ) všech položek u všech zařízení? Tuto akci nelze vrátit zpět.",
"Maintenance_Tool_UnlockFields_text": "Tento nástroj odstraní všechny zdrojové hodnoty ze všech sledovaných polí pro všechna zařízení, čímž efektivně odemkne všechna pole pro pluginy a uživatele. Používejte jej opatrně, protože to ovlivní celý inventář vašich zařízení.",
"Maintenance_Tool_arpscansw": "Přepnout ARP sken (zapnuto/vypnuto)",
"Maintenance_Tool_arpscansw_noti": "Přepne ARP sken na zapnuto nebo vypnuto",
"Maintenance_Tool_arpscansw_noti_text": "Pokud je sken vypnut, zůstává vypnutý do opětovné aktivace.",
"Maintenance_Tool_arpscansw_text": "Přepíná ARP-SCAN na zapnuto, nebo vypnuto. Jakmile je skenování vypnuto, zůstává vypnuto, dokud není znovu aktivováno. Aktivní skenování nejsou přerušena.",
"Maintenance_Tool_backup": "Záloha DB",
"Maintenance_Tool_backup_noti": "Záloha DB",
"Maintenance_Tool_backup_noti_text": "Opravdu chcete spustit zálohu DB? Ujistěte se, že neběží žádný sken.",
"Maintenance_Tool_backup_text": "Databázové zálohy jsou umístěny v databázovém adresáři jako ZIP archiv pojmenovaný podle jeho data vytvoření. Počet backupů není limitován.",
"Maintenance_Tool_check_visible": "Odšrktněte pro skrytí sloupce.",
"Maintenance_Tool_clearSourceFields_selected": "Vymazat zrojové položky",
"Maintenance_Tool_clearSourceFields_selected_noti": "Vymazat zdroje",
"Maintenance_Tool_clearSourceFields_selected_text": "Toto vymaže všechny zdrojové položky zvolených zařízení. Tuto akci nelze vrátit zpět.",
"Maintenance_Tool_darkmode": "Přepnutí režimů (Tmavý/Světlý)",
"Maintenance_Tool_darkmode_noti": "Přepnutí režimů",
"Maintenance_Tool_darkmode_noti_text": "Po změně tématu se stránka pokusí znovu načíst pro aktivaci změn. Pokud bude potřeba, musí být vymazána cache.",
"Maintenance_Tool_darkmode_text": "Přepíná mezi tmavým a světlým režimem. Pokud přepínač nefunguje správně, zkuste vymazat cache prohlížeče. Změny jsou provedeny na straně serveru, takže ovlivňují všechna použitá zařízení.",
"Maintenance_Tool_del_ActHistory": "Odstranění síťové aktivity",
"Maintenance_Tool_del_ActHistory_noti": "Odstranit síťovou aktivitu",
"Maintenance_Tool_del_ActHistory_noti_text": "Opravdu chcete resetovat síťovou aktivitu?",
"Maintenance_Tool_del_ActHistory_text": "Grafy síťové aktivity byly resetovány. Toto neovlivní události.",
"Maintenance_Tool_del_alldev": "Odstanit všechna zařízení",
"Maintenance_Tool_del_alldev_noti": "Odstranit zařízení",
"Maintenance_Tool_del_alldev_noti_text": "Opravdu chcete odstranit všechna zařízení?",
"Maintenance_Tool_del_alldev_text": "Před použitím této funkce prosím proveďte zálohu. Odstranění nelze vrátit zpět. Všechna zařízení budou z databáze odstraněna.",
"Maintenance_Tool_del_allevents": "Odstranit události (reset přítomnosti)",
"Maintenance_Tool_del_allevents30": "Odstranit všechny události staří 30 dní",
"Maintenance_Tool_del_allevents30_noti": "Odstranit události",
"Maintenance_Tool_del_allevents30_noti_text": "Opravdu chcete odstranit všechny události starší 30 dní? Toto vyresetuje přítomnost všech zařízení.",
"Maintenance_Tool_del_allevents30_text": "",
"Maintenance_Tool_del_allevents_noti": "",
"Maintenance_Tool_del_allevents_noti_text": "",
@@ -805,4 +808,4 @@
"settings_system_label": "",
"settings_update_item_warning": "",
"test_event_tooltip": ""
}
}

View File

@@ -29,8 +29,8 @@
"AppEvents_Type": "Typ",
"Apprise_display_name": "Apprise",
"Apprise_icon": "<i class=\"fa fa-bullhorn\"></i>",
"BACKEND_API_URL_description": "",
"BACKEND_API_URL_name": "",
"BACKEND_API_URL_description": "Wird verwendet, damit das Frontend mit dem Backend kommunizieren kann. Standardmäßig ist hier <code>/server</code> eingestellt und sollte in der Regel nicht geändert werden.",
"BACKEND_API_URL_name": "URL der Backend-API",
"BackDevDetail_Actions_Ask_Run": "Möchtest du die Aktion ausführen?",
"BackDevDetail_Actions_Not_Registered": "Aktion nicht registriert: ",
"BackDevDetail_Actions_Title_Run": "Aktion ausführen",
@@ -70,16 +70,18 @@
"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",
"DEEP_SLEEP_description": "Senkt die CPU-Auslastung, indem die Wartezeiten im Leerlauf zwischen den Verarbeitungszyklen verlängert werden. Bei Aktivierung können sich Scans um bis zu 1 Minute verzögern, und die Benutzeroberfläche reagiert möglicherweise weniger schnell.",
"DEEP_SLEEP_name": "Tiefschlaf",
"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_Children_Title": "",
"DevDetail_Children_Title": "Beziehungen zu untergeordneten Elementen",
"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",
"DevDetail_CustomProperties_Title": "Benutzerdefinierte Eigenschaften",
"DevDetail_CustomProps_reset_info": "Dadurch werden Ihre benutzerdefinierten Eigenschaften auf diesem Gerät entfernt und auf den Standardwert zurückgesetzt.",
"DevDetail_DisplayFields_Title": "Anzeige",
"DevDetail_EveandAl_AlertAllEvents": "Alarmereignisse",
"DevDetail_EveandAl_AlertDown": "Melde Down",
"DevDetail_EveandAl_AlertDown": "Alarm ausgeschaltet",
"DevDetail_EveandAl_Archived": "Archiviert",
"DevDetail_EveandAl_NewDevice": "Neues Gerät",
"DevDetail_EveandAl_NewDevice_Tooltip": "Zeigt den Status „Neu“ für das Gerät an und nimmt es in Listen auf, wenn der Filter „Neue Geräte“ aktiv ist. Hat keine Auswirkungen auf Benachrichtigungen.",
@@ -109,11 +111,11 @@
"DevDetail_MainInfo_Type": "Typ",
"DevDetail_MainInfo_Vendor": "Hersteller",
"DevDetail_MainInfo_mac": "MAC",
"DevDetail_NavToChildNode": "",
"DevDetail_NavToChildNode": "Knoten untergeordneter Elemente öffnen",
"DevDetail_Network_Node_hover": "Wählen Sie das Elternnetzgerät aus, an das das aktuelle Gerät angeschlossen ist, um den Netzwerkbaum zu erstellen.",
"DevDetail_Network_Port_hover": "Der Port, mit dem dieses Gerät am übergeordneten Netzwerkgerät verbunden ist. Bleibt er leer, wird ein WLAN-Symbol in der Netzwerkstruktur angezeigt.",
"DevDetail_Nmap_Scans": "Nmap Scans",
"DevDetail_Nmap_Scans_desc": "Hier kannst du manuelle NMAP Scans starten. Reguläre automatische NMAP Scans können mit dem Services & Ports (NMAP) Plugin geplant werden. Gehe zu den <a href='/settings.php' target='_blank'>Einstellungen</a> um erfahren",
"DevDetail_Nmap_Scans_desc": "Hier kannst du manuelle NMAP Scans starten. Reguläre automatische NMAP Scans können mit dem Services & Ports (NMAP) Plugin geplant werden. Gehe zu den <a href=\"https://github.com/netalertx/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Docs</a> um mehr erfahren",
"DevDetail_Nmap_buttonDefault": "Standard Scan",
"DevDetail_Nmap_buttonDefault_text": "Standard Scan: Nmap scannt die ersten 1.000 Ports für jedes angeforderte Scan-Protokoll. Damit werden etwa 93 % der TCP-Ports und 49 % der UDP-Ports erfasst. (ca. 5-10 Sekunden)",
"DevDetail_Nmap_buttonDetail": "Detailierter Scan",
@@ -143,7 +145,7 @@
"DevDetail_SessionTable_Duration": "Dauer",
"DevDetail_SessionTable_IP": "IP",
"DevDetail_SessionTable_Order": "Reihenfolge",
"DevDetail_Shortcut_CurrentStatus": "aktueller Status",
"DevDetail_Shortcut_CurrentStatus": "Status",
"DevDetail_Shortcut_DownAlerts": "Down Meldungen",
"DevDetail_Shortcut_Presence": "Anwesenheit",
"DevDetail_Shortcut_Sessions": "Sitzungen",
@@ -185,7 +187,7 @@
"DevDetail_Tools_WOL": "Sende Wol Befehl an ",
"DevDetail_Tools_WOL_noti": "Wake-on-LAN",
"DevDetail_Tools_WOL_noti_text": "Der Wake-on-LAN Befehl wurde and die Broadcast Adresse gesendet. Wenn sich das zu startende Gerät nicht im gleichen Subnet / VLan wie NetAlertX befindet, wird das Gerät nicht reagieren.",
"DevDetail_Type_hover": "Der Type des Gerätes. If you select any of the pre-defined network devices (e.g.: AP, Firewall, Router, Switch...) they will show up in the Network tree configuration as possible parent network nodes.",
"DevDetail_Type_hover": "Der Gerätetyp. Wenn Sie eines der vordefinierten Netzwerkgeräte (z. B. AP, Firewall, Router, Switch…) auswählen, werden diese in der Netzwerkbaumkonfiguration als mögliche übergeordnete Netzwerkknoten angezeigt.",
"DevDetail_Vendor_hover": "Der Anbieter sollte automatisch erkannt werden. Du kannst den Wert überschreiben oder deinen eigenen Wert hinzufügen.",
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
"DevDetail_button_AddIcon": "Neues Symbol Hinzufügen",
@@ -207,17 +209,17 @@
"Device_MultiEdit_MassActions": "Massen aktionen:",
"Device_MultiEdit_No_Devices": "Keine Geräte ausgewählt.",
"Device_MultiEdit_Tooltip": "Achtung! Beim Drücken werden alle Werte auf die oben ausgewählten Geräte übertragen.",
"Device_NextScan_Imminent": "",
"Device_NextScan_In": "",
"Device_NoData_Help": "",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
"Device_Save_Failed": "",
"Device_Save_Unauthorized": "",
"Device_NextScan_Imminent": "Bevorstehend...",
"Device_NextScan_In": "Nächster Scan in etwa ",
"Device_NoData_Help": "Falls nach dem Scan keine Geräte angezeigt werden, überprüfen Sie Ihre SCAN_SUBNETS Einstellung und die <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">Dokumentation</a>.",
"Device_NoData_Scanning": "Warten auf den ersten Scan dies kann nach der Ersteinrichtung einige Minuten dauern.",
"Device_NoData_Title": "Noch keine Geräte gefunden",
"Device_NoMatch_Title": "Es wurden keine Geräte gefunden, die dem aktuellen Filter entsprechen",
"Device_Save_Failed": "Das Speichern des Geräts ist fehlgeschlagen",
"Device_Save_Unauthorized": "Nicht autorisiert ungültiger API-Token",
"Device_Saved_Success": "Gerät erfolgreich gespeichert",
"Device_Saved_Unexpected": "",
"Device_Scanning": "",
"Device_Saved_Unexpected": "Geräteaktualisierung hat eine unerwartete Antwort zurückgegeben",
"Device_Scanning": "Wird gescannt...",
"Device_Searchbox": "Suche",
"Device_Shortcut_AllDevices": "Meine Geräte",
"Device_Shortcut_AllNodes": "Alle Knoten",
@@ -239,8 +241,8 @@
"Device_TableHead_Flapping": "",
"Device_TableHead_GUID": "GUID",
"Device_TableHead_Group": "Gruppe",
"Device_TableHead_IPv4": "",
"Device_TableHead_IPv6": "",
"Device_TableHead_IPv4": "IPv4",
"Device_TableHead_IPv6": "IPv6",
"Device_TableHead_Icon": "Icon",
"Device_TableHead_LastIP": "Letzte IP",
"Device_TableHead_LastIPOrder": "Letzte erhaltene IP",
@@ -251,7 +253,7 @@
"Device_TableHead_Name": "Name",
"Device_TableHead_NetworkSite": "Netzwerkseite",
"Device_TableHead_Owner": "Eigentümer",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_ParentRelType": "Beziehungstyp",
"Device_TableHead_Parent_MAC": "Übergeordneter Netzwerkknoten",
"Device_TableHead_Port": "Port",
"Device_TableHead_PresentLastScan": "Anwesenheit",
@@ -315,11 +317,11 @@
"FakeMAC_hover": "",
"FieldLock_Error": "",
"FieldLock_Lock_Tooltip": "",
"FieldLock_Locked": "",
"FieldLock_Locked": "Feld gesperrt",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_Source_Label": "",
"FieldLock_Source_Label": "Quelle: ",
"FieldLock_Unlock_Tooltip": "",
"FieldLock_Unlocked": "",
"FieldLock_Unlocked": "Feld entsperrt",
"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",
@@ -327,13 +329,13 @@
"Gen_AddDevice": "Gerät hinzufügen",
"Gen_Add_All": "Alle hinzufügen",
"Gen_All_Devices": "Alle Geräte",
"Gen_Archived": "",
"Gen_Archived": "Archiviert",
"Gen_AreYouSure": "Sind Sie sich sicher?",
"Gen_Backup": "Sichern",
"Gen_Cancel": "Abbrechen",
"Gen_Change": "Ändern",
"Gen_Copy": "Ausführen",
"Gen_CopyToClipboard": "",
"Gen_CopyToClipboard": "In die Zwischenablage kopieren",
"Gen_DataUpdatedUITakesTime": "OK Es kann einen Moment dauern, bis die Benutzeroberfläche aktualisiert wird, während ein Scan ausgeführt wird.",
"Gen_Delete": "Löschen",
"Gen_DeleteAll": "Alles löschen",
@@ -344,10 +346,11 @@
"Gen_Flapping": "",
"Gen_Generate": "Generieren",
"Gen_InvalidMac": "Ungültige MAC-Adresse.",
"Gen_Invalid_Value": "",
"Gen_Invalid_Value": "Ein ungültiger Wert wurde eingegeben",
"Gen_LockedDB": "ERROR - DB eventuell gesperrt - Nutze die Konsole in den Entwickler Werkzeugen (F12) zur Überprüfung oder probiere es später erneut.",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_NetworkMask": "Netzmaske",
"Gen_New": "Neu",
"Gen_No_Data": "Keine Daten",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -366,7 +369,7 @@
"Gen_SelectToPreview": "Zur Vorschau auswählen",
"Gen_Selected_Devices": "Ausgewählte Geräte:",
"Gen_Sleeping": "",
"Gen_Subnet": "",
"Gen_Subnet": "Subnetz",
"Gen_Switch": "Umschalten",
"Gen_Upd": "Aktualisierung erfolgreich",
"Gen_Upd_Fail": "Aktualisierung fehlgeschlagen",
@@ -878,4 +881,4 @@
"settings_system_label": "System",
"settings_update_item_warning": "",
"test_event_tooltip": "Speichere die Änderungen, bevor Sie die Einstellungen testen."
}
}

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "Can't remove, at least one property is needed.",
"DAYS_TO_KEEP_EVENTS_description": "This is a maintenance setting. This specifies the number of days worth of event entries that will be kept. All older events will be deleted periodically. Also applies on Plugin Events History.",
"DAYS_TO_KEEP_EVENTS_name": "Delete events older than",
"DEEP_SLEEP_description": "Lowers CPU usage by extending idle wait times between processing cycles. When enabled, scans may be delayed by up to 1 minute and the UI might become less responsive.",
"DEEP_SLEEP_name": "Deep sleep",
"DISCOVER_PLUGINS_description": "Disable this option to speed up initialization and settings saving. When disabled, plugins are not discovered, and you cannot add new plugins to the <code>LOADED_PLUGINS</code> setting.",
"DISCOVER_PLUGINS_name": "Discover plugins",
"DevDetail_Children_Title": "Children Relationships",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "Name",
"Device_TableHead_NetworkSite": "Network Site",
"Device_TableHead_Owner": "Owner",
"Device_TableHead_ParentRelType": "Relationship Type",
"Device_TableHead_Parent_MAC": "Parent network node",
"Device_TableHead_ParentRelType": "Relationship",
"Device_TableHead_Parent_MAC": "Parent node",
"Device_TableHead_Port": "Port",
"Device_TableHead_PresentLastScan": "Presence",
"Device_TableHead_ReqNicsOnline": "Require NICs Online",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "ERROR - DB might be locked - Check F12 Dev tools -> Console or try later.",
"Gen_NetworkMask": "Network mask",
"Gen_New": "New",
"Gen_No_Data": "No data",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -400,11 +403,11 @@
"Login_Toggle_Info_headline": "Password Information",
"Maint_PurgeLog": "Purge log",
"Maint_RestartServer": "Restart server",
"Maint_Restart_Server_noti_text": "Are you sure you want to restart the backend server? This may casue app inconsistency. Backup your setup first. <br/> <br/> Note: This may take a few minutes.",
"Maint_Restart_Server_noti_text": "Are you sure you want to restart the backend server? This may cause app inconsistency. Backup your setup first. <br/> <br/> Note: This may take a few minutes.",
"Maintenance_InitCheck": "Init check",
"Maintenance_InitCheck_Checking": "Checking…",
"Maintenance_InitCheck_QuickSetupGuide": "Make sure you followed the <a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">quick setup guide</a>.",
"Maintenance_InitCheck_Success": "Application initialized succesfully!",
"Maintenance_InitCheck_Success": "Application initialized successfully!",
"Maintenance_ReCheck": "Retry check",
"Maintenance_Running_Version": "Installed version",
"Maintenance_Status": "Status",

View File

@@ -68,6 +68,8 @@
"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",
"DEEP_SLEEP_description": "Reduce el uso de la CPU al extender los tiempos de espera entre los ciclos de procesamiento. Cuando se habilita, los análisis pueden retrasarse hasta un minuto y la interfaz de usuario puede volverse menos reactiva.",
"DEEP_SLEEP_name": "Sueño profundo",
"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_Children_Title": "Relaciones hijo",
@@ -346,6 +348,7 @@
"Gen_LockedDB": "Fallo - La base de datos puede estar bloqueada - Pulsa F1 -> Ajustes de desarrolladores -> Consola o prueba más tarde.",
"Gen_NetworkMask": "Máscara de red",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "Desconectado",
"Gen_Okay": "Aceptar",
"Gen_Online": "En linea",
@@ -876,4 +879,4 @@
"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_tooltip": "Guarda tus cambios antes de probar nuevos ajustes."
}
}

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "",
"DAYS_TO_KEEP_EVENTS_description": "",
"DAYS_TO_KEEP_EVENTS_name": "",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "",
"Gen_Okay": "",
"Gen_Online": "",

View File

@@ -0,0 +1,811 @@
{
"API_CUSTOM_SQL_description": "",
"API_CUSTOM_SQL_name": "",
"API_TOKEN_description": "",
"API_TOKEN_name": "",
"API_display_name": "",
"API_icon": "",
"About_Design": "",
"About_Exit": "",
"About_Title": "",
"AppEvents_AppEventProcessed": "",
"AppEvents_DateTimeCreated": "",
"AppEvents_Extra": "",
"AppEvents_GUID": "",
"AppEvents_Helper1": "",
"AppEvents_Helper2": "",
"AppEvents_Helper3": "",
"AppEvents_ObjectForeignKey": "",
"AppEvents_ObjectIndex": "",
"AppEvents_ObjectIsArchived": "",
"AppEvents_ObjectIsNew": "",
"AppEvents_ObjectPlugin": "",
"AppEvents_ObjectPrimaryID": "",
"AppEvents_ObjectSecondaryID": "",
"AppEvents_ObjectStatus": "",
"AppEvents_ObjectStatusColumn": "",
"AppEvents_ObjectType": "",
"AppEvents_Plugin": "",
"AppEvents_Type": "",
"BACKEND_API_URL_description": "",
"BACKEND_API_URL_name": "",
"BackDevDetail_Actions_Ask_Run": "",
"BackDevDetail_Actions_Not_Registered": "",
"BackDevDetail_Actions_Title_Run": "",
"BackDevDetail_Copy_Ask": "",
"BackDevDetail_Copy_Title": "",
"BackDevDetail_Tools_WOL_error": "",
"BackDevDetail_Tools_WOL_okay": "",
"BackDevices_Arpscan_disabled": "",
"BackDevices_Arpscan_enabled": "",
"BackDevices_Backup_CopError": "",
"BackDevices_Backup_Failed": "",
"BackDevices_Backup_okay": "",
"BackDevices_DBTools_DelDevError_a": "",
"BackDevices_DBTools_DelDevError_b": "",
"BackDevices_DBTools_DelDev_a": "",
"BackDevices_DBTools_DelDev_b": "",
"BackDevices_DBTools_DelEvents": "",
"BackDevices_DBTools_DelEventsError": "",
"BackDevices_DBTools_ImportCSV": "",
"BackDevices_DBTools_ImportCSVError": "",
"BackDevices_DBTools_ImportCSVMissing": "",
"BackDevices_DBTools_Purge": "",
"BackDevices_DBTools_UpdDev": "",
"BackDevices_DBTools_UpdDevError": "",
"BackDevices_DBTools_Upgrade": "",
"BackDevices_DBTools_UpgradeError": "",
"BackDevices_Device_UpdDevError": "",
"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": "",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
"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": "",
"DevDetail_EveandAl_NewDevice": "",
"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_Loading": "",
"DevDetail_MainInfo_Comments": "",
"DevDetail_MainInfo_Favorite": "",
"DevDetail_MainInfo_Group": "",
"DevDetail_MainInfo_Location": "",
"DevDetail_MainInfo_Name": "",
"DevDetail_MainInfo_Network": "",
"DevDetail_MainInfo_Network_Port": "",
"DevDetail_MainInfo_Network_Site": "",
"DevDetail_MainInfo_Network_Title": "",
"DevDetail_MainInfo_Owner": "",
"DevDetail_MainInfo_SSID": "",
"DevDetail_MainInfo_Title": "",
"DevDetail_MainInfo_Type": "",
"DevDetail_MainInfo_Vendor": "",
"DevDetail_MainInfo_mac": "",
"DevDetail_NavToChildNode": "",
"DevDetail_Network_Node_hover": "",
"DevDetail_Network_Port_hover": "",
"DevDetail_Nmap_Scans": "",
"DevDetail_Nmap_Scans_desc": "",
"DevDetail_Nmap_buttonDefault": "",
"DevDetail_Nmap_buttonDefault_text": "",
"DevDetail_Nmap_buttonDetail": "",
"DevDetail_Nmap_buttonDetail_text": "",
"DevDetail_Nmap_buttonFast": "",
"DevDetail_Nmap_buttonFast_text": "",
"DevDetail_Nmap_buttonSkipDiscovery": "",
"DevDetail_Nmap_buttonSkipDiscovery_text": "",
"DevDetail_Nmap_resultsLink": "",
"DevDetail_Owner_hover": "",
"DevDetail_Periodselect_All": "",
"DevDetail_Periodselect_LastMonth": "",
"DevDetail_Periodselect_LastWeek": "",
"DevDetail_Periodselect_LastYear": "",
"DevDetail_Periodselect_today": "",
"DevDetail_Run_Actions_Title": "",
"DevDetail_Run_Actions_Tooltip": "",
"DevDetail_SessionInfo_FirstSession": "",
"DevDetail_SessionInfo_LastIP": "",
"DevDetail_SessionInfo_LastSession": "",
"DevDetail_SessionInfo_StaticIP": "",
"DevDetail_SessionInfo_Status": "",
"DevDetail_SessionInfo_Title": "",
"DevDetail_SessionTable_Additionalinfo": "",
"DevDetail_SessionTable_Connection": "",
"DevDetail_SessionTable_Disconnection": "",
"DevDetail_SessionTable_Duration": "",
"DevDetail_SessionTable_IP": "",
"DevDetail_SessionTable_Order": "",
"DevDetail_Shortcut_CurrentStatus": "",
"DevDetail_Shortcut_DownAlerts": "",
"DevDetail_Shortcut_Presence": "",
"DevDetail_Shortcut_Sessions": "",
"DevDetail_Tab_Details": "",
"DevDetail_Tab_Events": "",
"DevDetail_Tab_EventsTableDate": "",
"DevDetail_Tab_EventsTableEvent": "",
"DevDetail_Tab_EventsTableIP": "",
"DevDetail_Tab_EventsTableInfo": "",
"DevDetail_Tab_Nmap": "",
"DevDetail_Tab_NmapEmpty": "",
"DevDetail_Tab_NmapTableExtra": "",
"DevDetail_Tab_NmapTableHeader": "",
"DevDetail_Tab_NmapTableIndex": "",
"DevDetail_Tab_NmapTablePort": "",
"DevDetail_Tab_NmapTableService": "",
"DevDetail_Tab_NmapTableState": "",
"DevDetail_Tab_NmapTableText": "",
"DevDetail_Tab_NmapTableTime": "",
"DevDetail_Tab_Plugins": "",
"DevDetail_Tab_Presence": "",
"DevDetail_Tab_Sessions": "",
"DevDetail_Tab_Tools": "",
"DevDetail_Tab_Tools_Internet_Info_Description": "",
"DevDetail_Tab_Tools_Internet_Info_Error": "",
"DevDetail_Tab_Tools_Internet_Info_Start": "",
"DevDetail_Tab_Tools_Internet_Info_Title": "",
"DevDetail_Tab_Tools_Nslookup_Description": "",
"DevDetail_Tab_Tools_Nslookup_Error": "",
"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_Traceroute_Error": "",
"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_button_AddIcon": "",
"DevDetail_button_AddIcon_Help": "",
"DevDetail_button_AddIcon_Tooltip": "",
"DevDetail_button_Delete": "",
"DevDetail_button_DeleteEvents": "",
"DevDetail_button_DeleteEvents_Warning": "",
"DevDetail_button_Delete_ask": "",
"DevDetail_button_OverwriteIcons": "",
"DevDetail_button_OverwriteIcons_Tooltip": "",
"DevDetail_button_OverwriteIcons_Warning": "",
"DevDetail_button_Reset": "",
"DevDetail_button_Save": "",
"DeviceEdit_ValidMacIp": "",
"Device_MultiEdit": "",
"Device_MultiEdit_Backup": "",
"Device_MultiEdit_Fields": "",
"Device_MultiEdit_MassActions": "",
"Device_MultiEdit_No_Devices": "",
"Device_MultiEdit_Tooltip": "",
"Device_NextScan_Imminent": "",
"Device_NextScan_In": "",
"Device_NoData_Help": "",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
"Device_Save_Failed": "",
"Device_Save_Unauthorized": "",
"Device_Saved_Success": "",
"Device_Saved_Unexpected": "",
"Device_Scanning": "",
"Device_Searchbox": "",
"Device_Shortcut_AllDevices": "",
"Device_Shortcut_AllNodes": "",
"Device_Shortcut_Archived": "",
"Device_Shortcut_Connected": "",
"Device_Shortcut_Devices": "",
"Device_Shortcut_DownAlerts": "",
"Device_Shortcut_DownOnly": "",
"Device_Shortcut_Favorites": "",
"Device_Shortcut_NewDevices": "",
"Device_Shortcut_OnlineChart": "",
"Device_Shortcut_Unstable": "",
"Device_TableHead_AlertDown": "",
"Device_TableHead_Connected_Devices": "",
"Device_TableHead_CustomProps": "",
"Device_TableHead_FQDN": "",
"Device_TableHead_Favorite": "",
"Device_TableHead_FirstSession": "",
"Device_TableHead_Flapping": "",
"Device_TableHead_GUID": "",
"Device_TableHead_Group": "",
"Device_TableHead_IPv4": "",
"Device_TableHead_IPv6": "",
"Device_TableHead_Icon": "",
"Device_TableHead_LastIP": "",
"Device_TableHead_LastIPOrder": "",
"Device_TableHead_LastSession": "",
"Device_TableHead_Location": "",
"Device_TableHead_MAC": "",
"Device_TableHead_MAC_full": "",
"Device_TableHead_Name": "",
"Device_TableHead_NetworkSite": "",
"Device_TableHead_Owner": "",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_Parent_MAC": "",
"Device_TableHead_Port": "",
"Device_TableHead_PresentLastScan": "",
"Device_TableHead_ReqNicsOnline": "",
"Device_TableHead_RowID": "",
"Device_TableHead_Rowid": "",
"Device_TableHead_SSID": "",
"Device_TableHead_SourcePlugin": "",
"Device_TableHead_Status": "",
"Device_TableHead_SyncHubNodeName": "",
"Device_TableHead_Type": "",
"Device_TableHead_Vendor": "",
"Device_TableHead_Vlan": "",
"Device_Table_Not_Network_Device": "",
"Device_Table_info": "",
"Device_Table_nav_next": "",
"Device_Table_nav_prev": "",
"Device_Tablelenght": "",
"Device_Tablelenght_all": "",
"Device_Title": "",
"Devices_Filters": "",
"ENABLE_PLUGINS_description": "",
"ENABLE_PLUGINS_name": "",
"ENCRYPTION_KEY_description": "",
"ENCRYPTION_KEY_name": "",
"Email_display_name": "",
"Email_icon": "",
"Events_Loading": "",
"Events_Periodselect_All": "",
"Events_Periodselect_LastMonth": "",
"Events_Periodselect_LastWeek": "",
"Events_Periodselect_LastYear": "",
"Events_Periodselect_today": "",
"Events_Searchbox": "",
"Events_Shortcut_AllEvents": "",
"Events_Shortcut_DownAlerts": "",
"Events_Shortcut_Events": "",
"Events_Shortcut_MissSessions": "",
"Events_Shortcut_NewDevices": "",
"Events_Shortcut_Sessions": "",
"Events_Shortcut_VoidSessions": "",
"Events_TableHead_AdditionalInfo": "",
"Events_TableHead_Connection": "",
"Events_TableHead_Date": "",
"Events_TableHead_Device": "",
"Events_TableHead_Disconnection": "",
"Events_TableHead_Duration": "",
"Events_TableHead_DurationOrder": "",
"Events_TableHead_EventType": "",
"Events_TableHead_IP": "",
"Events_TableHead_IPOrder": "",
"Events_TableHead_Order": "",
"Events_TableHead_Owner": "",
"Events_TableHead_PendingAlert": "",
"Events_Table_info": "",
"Events_Table_nav_next": "",
"Events_Table_nav_prev": "",
"Events_Tablelenght": "",
"Events_Tablelenght_all": "",
"Events_Title": "",
"FakeMAC_hover": "",
"FieldLock_Error": "",
"FieldLock_Lock_Tooltip": "",
"FieldLock_Locked": "",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_Source_Label": "",
"FieldLock_Unlock_Tooltip": "",
"FieldLock_Unlocked": "",
"GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "",
"Gen_Action": "",
"Gen_Add": "",
"Gen_AddDevice": "",
"Gen_Add_All": "",
"Gen_All_Devices": "",
"Gen_Archived": "",
"Gen_AreYouSure": "",
"Gen_Backup": "",
"Gen_Cancel": "",
"Gen_Change": "",
"Gen_Copy": "",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "",
"Gen_Delete": "",
"Gen_DeleteAll": "",
"Gen_Description": "",
"Gen_Down": "",
"Gen_Error": "",
"Gen_Filter": "",
"Gen_Flapping": "",
"Gen_Generate": "",
"Gen_InvalidMac": "",
"Gen_Invalid_Value": "",
"Gen_LockedDB": "",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "",
"Gen_Okay": "",
"Gen_Online": "",
"Gen_Purge": "",
"Gen_ReadDocs": "",
"Gen_Remove_All": "",
"Gen_Remove_Last": "",
"Gen_Reset": "",
"Gen_Restore": "",
"Gen_Run": "",
"Gen_Save": "",
"Gen_Saved": "",
"Gen_Search": "",
"Gen_Select": "",
"Gen_SelectIcon": "",
"Gen_SelectToPreview": "",
"Gen_Selected_Devices": "",
"Gen_Sleeping": "",
"Gen_Subnet": "",
"Gen_Switch": "",
"Gen_Upd": "",
"Gen_Upd_Fail": "",
"Gen_Update": "",
"Gen_Update_Value": "",
"Gen_ValidIcon": "",
"Gen_Warning": "",
"Gen_Work_In_Progress": "",
"Gen_create_new_device": "",
"Gen_create_new_device_info": "",
"General_display_name": "",
"General_icon": "",
"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": "",
"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_InitCheck": "",
"Maintenance_InitCheck_Checking": "",
"Maintenance_InitCheck_QuickSetupGuide": "",
"Maintenance_InitCheck_Success": "",
"Maintenance_ReCheck": "",
"Maintenance_Running_Version": "",
"Maintenance_Status": "",
"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": "",
"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_UnlockFields": "",
"Maintenance_Tool_UnlockFields_noti": "",
"Maintenance_Tool_UnlockFields_noti_text": "",
"Maintenance_Tool_UnlockFields_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_clearSourceFields_selected": "",
"Maintenance_Tool_clearSourceFields_selected_noti": "",
"Maintenance_Tool_clearSourceFields_selected_text": "",
"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_del_unlockFields_selecteddev_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_unlockFields_selecteddev": "",
"Maintenance_Tool_unlockFields_selecteddev_noti": "",
"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": "",
"Navigation_AppEvents": "",
"Navigation_Devices": "",
"Navigation_Donations": "",
"Navigation_Events": "",
"Navigation_Integrations": "",
"Navigation_Maintenance": "",
"Navigation_Monitoring": "",
"Navigation_Network": "",
"Navigation_Notifications": "",
"Navigation_Plugins": "",
"Navigation_Presence": "",
"Navigation_Report": "",
"Navigation_Settings": "",
"Navigation_SystemInfo": "",
"Navigation_Workflows": "",
"Network_Assign": "",
"Network_Cant_Assign": "",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "",
"Network_Connected": "",
"Network_Devices": "",
"Network_ManageAdd": "",
"Network_ManageAdd_Name": "",
"Network_ManageAdd_Name_text": "",
"Network_ManageAdd_Port": "",
"Network_ManageAdd_Port_text": "",
"Network_ManageAdd_Submit": "",
"Network_ManageAdd_Type": "",
"Network_ManageAdd_Type_text": "",
"Network_ManageAssign": "",
"Network_ManageDel": "",
"Network_ManageDel_Name": "",
"Network_ManageDel_Name_text": "",
"Network_ManageDel_Submit": "",
"Network_ManageDevices": "",
"Network_ManageEdit": "",
"Network_ManageEdit_ID": "",
"Network_ManageEdit_ID_text": "",
"Network_ManageEdit_Name": "",
"Network_ManageEdit_Name_text": "",
"Network_ManageEdit_Port": "",
"Network_ManageEdit_Port_text": "",
"Network_ManageEdit_Submit": "",
"Network_ManageEdit_Type": "",
"Network_ManageEdit_Type_text": "",
"Network_ManageLeaf": "",
"Network_ManageUnassign": "",
"Network_NoAssignedDevices": "",
"Network_NoDevices": "",
"Network_Node": "",
"Network_Node_Name": "",
"Network_Parent": "",
"Network_Root": "",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "",
"Network_Table_IP": "",
"Network_Table_State": "",
"Network_Title": "",
"Network_UnassignedDevices": "",
"Notifications_All": "",
"Notifications_Mark_All_Read": "",
"PIALERT_WEB_PASSWORD_description": "",
"PIALERT_WEB_PASSWORD_name": "",
"PIALERT_WEB_PROTECTION_description": "",
"PIALERT_WEB_PROTECTION_name": "",
"PLUGINS_KEEP_HIST_description": "",
"PLUGINS_KEEP_HIST_name": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "",
"Plugins_DeleteAll": "",
"Plugins_Filters_Mac": "",
"Plugins_History": "",
"Plugins_Obj_DeleteListed": "",
"Plugins_Objects": "",
"Plugins_Out_of": "",
"Plugins_Unprocessed_Events": "",
"Plugins_no_control": "",
"Presence_CalHead_day": "",
"Presence_CalHead_lang": "",
"Presence_CalHead_month": "",
"Presence_CalHead_quarter": "",
"Presence_CalHead_week": "",
"Presence_CalHead_year": "",
"Presence_CallHead_Devices": "",
"Presence_Key_OnlineNow": "",
"Presence_Key_OnlineNow_desc": "",
"Presence_Key_OnlinePast": "",
"Presence_Key_OnlinePastMiss": "",
"Presence_Key_OnlinePastMiss_desc": "",
"Presence_Key_OnlinePast_desc": "",
"Presence_Loading": "",
"Presence_Shortcut_AllDevices": "",
"Presence_Shortcut_Archived": "",
"Presence_Shortcut_Connected": "",
"Presence_Shortcut_Devices": "",
"Presence_Shortcut_DownAlerts": "",
"Presence_Shortcut_Favorites": "",
"Presence_Shortcut_NewDevices": "",
"Presence_Title": "",
"REFRESH_FQDN_description": "",
"REFRESH_FQDN_name": "",
"REPORT_DASHBOARD_URL_description": "",
"REPORT_DASHBOARD_URL_name": "",
"REPORT_ERROR": "",
"REPORT_MAIL_description": "",
"REPORT_MAIL_name": "",
"REPORT_TITLE": "",
"RandomMAC_hover": "",
"Reports_Sent_Log": "",
"SCAN_SUBNETS_description": "",
"SCAN_SUBNETS_name": "",
"SYSTEM_TITLE": "",
"Setting_Override": "",
"Setting_Override_Description": "",
"Settings_Metadata_Toggle": "",
"Settings_Show_Description": "",
"Settings_device_Scanners_desync": "",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "",
"Systeminfo_CPU_Cores": "",
"Systeminfo_CPU_Name": "",
"Systeminfo_CPU_Speed": "",
"Systeminfo_CPU_Temp": "",
"Systeminfo_CPU_Vendor": "",
"Systeminfo_Client_Resolution": "",
"Systeminfo_Client_User_Agent": "",
"Systeminfo_General": "",
"Systeminfo_General_Date": "",
"Systeminfo_General_Date2": "",
"Systeminfo_General_Full_Date": "",
"Systeminfo_General_TimeZone": "",
"Systeminfo_Memory": "",
"Systeminfo_Memory_Total_Memory": "",
"Systeminfo_Memory_Usage": "",
"Systeminfo_Memory_Usage_Percent": "",
"Systeminfo_Motherboard": "",
"Systeminfo_Motherboard_BIOS": "",
"Systeminfo_Motherboard_BIOS_Date": "",
"Systeminfo_Motherboard_BIOS_Vendor": "",
"Systeminfo_Motherboard_Manufactured": "",
"Systeminfo_Motherboard_Name": "",
"Systeminfo_Motherboard_Revision": "",
"Systeminfo_Network": "",
"Systeminfo_Network_Accept_Encoding": "",
"Systeminfo_Network_Accept_Language": "",
"Systeminfo_Network_Connection_Port": "",
"Systeminfo_Network_HTTP_Host": "",
"Systeminfo_Network_HTTP_Referer": "",
"Systeminfo_Network_HTTP_Referer_String": "",
"Systeminfo_Network_Hardware": "",
"Systeminfo_Network_Hardware_Interface_Mask": "",
"Systeminfo_Network_Hardware_Interface_Name": "",
"Systeminfo_Network_Hardware_Interface_RX": "",
"Systeminfo_Network_Hardware_Interface_TX": "",
"Systeminfo_Network_IP": "",
"Systeminfo_Network_IP_Connection": "",
"Systeminfo_Network_IP_Server": "",
"Systeminfo_Network_MIME": "",
"Systeminfo_Network_Request_Method": "",
"Systeminfo_Network_Request_Time": "",
"Systeminfo_Network_Request_URI": "",
"Systeminfo_Network_Secure_Connection": "",
"Systeminfo_Network_Secure_Connection_String": "",
"Systeminfo_Network_Server_Name": "",
"Systeminfo_Network_Server_Name_String": "",
"Systeminfo_Network_Server_Query": "",
"Systeminfo_Network_Server_Query_String": "",
"Systeminfo_Network_Server_Version": "",
"Systeminfo_Services": "",
"Systeminfo_Services_Description": "",
"Systeminfo_Services_Name": "",
"Systeminfo_Storage": "",
"Systeminfo_Storage_Device": "",
"Systeminfo_Storage_Mount": "",
"Systeminfo_Storage_Size": "",
"Systeminfo_Storage_Type": "",
"Systeminfo_Storage_Usage": "",
"Systeminfo_Storage_Usage_Free": "",
"Systeminfo_Storage_Usage_Mount": "",
"Systeminfo_Storage_Usage_Total": "",
"Systeminfo_Storage_Usage_Used": "",
"Systeminfo_System": "",
"Systeminfo_System_AVG": "",
"Systeminfo_System_Architecture": "",
"Systeminfo_System_Kernel": "",
"Systeminfo_System_OSVersion": "",
"Systeminfo_System_Running_Processes": "",
"Systeminfo_System_System": "",
"Systeminfo_System_Uname": "",
"Systeminfo_System_Uptime": "",
"Systeminfo_This_Client": "",
"Systeminfo_USB_Devices": "",
"TICKER_MIGRATE_TO_NETALERTX": "",
"TIMEZONE_description": "",
"TIMEZONE_name": "",
"UI_DEV_SECTIONS_description": "",
"UI_DEV_SECTIONS_name": "",
"UI_ICONS_description": "",
"UI_ICONS_name": "",
"UI_LANG_description": "",
"UI_LANG_name": "",
"UI_MY_DEVICES_description": "",
"UI_MY_DEVICES_name": "",
"UI_NOT_RANDOM_MAC_description": "",
"UI_NOT_RANDOM_MAC_name": "",
"UI_PRESENCE_description": "",
"UI_PRESENCE_name": "",
"UI_REFRESH_description": "",
"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_tooltip": "",
"add_option_event_tooltip": "",
"copy_icons_event_tooltip": "",
"devices_old": "",
"general_event_description": "",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "",
"report_guid_missing": "",
"report_select_format": "",
"report_time": "",
"run_event_tooltip": "",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "",
"settings_device_scanners": "",
"settings_device_scanners_icon": "",
"settings_device_scanners_info": "",
"settings_device_scanners_label": "",
"settings_enabled": "",
"settings_enabled_icon": "",
"settings_expand_all": "",
"settings_imported": "",
"settings_imported_label": "",
"settings_missing": "",
"settings_missing_block": "",
"settings_old": "",
"settings_other_scanners": "",
"settings_other_scanners_icon": "",
"settings_other_scanners_label": "",
"settings_publishers": "",
"settings_publishers_icon": "",
"settings_publishers_info": "",
"settings_publishers_label": "",
"settings_readonly": "",
"settings_saved": "",
"settings_system_icon": "",
"settings_system_label": "",
"settings_update_item_warning": "",
"test_event_tooltip": ""
}

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "Suppression impossible, au moins une donnée est requise.",
"DAYS_TO_KEEP_EVENTS_description": "Il s'agit d'un paramètre de maintenance. Il indique le nombre de jours pendant lesquels les entrées d'événements seront conservées. Tous les événements plus anciens seront supprimés périodiquement. S'applique également à l'historique des événements du plugin.",
"DAYS_TO_KEEP_EVENTS_name": "Supprimer les événements plus anciens que",
"DEEP_SLEEP_description": "Diminue l'utilisation du processeur, en augmentant les temps de repos entre les cycles de calcul. Quand activé, les scans peuvent être retardés jusqu'à 1 minute, et l'interface peut être moins réactive.",
"DEEP_SLEEP_name": "Veille profonde",
"DISCOVER_PLUGINS_description": "Désactivez cette option pour accélérer le démarrage et l'enregistrement de paramètres. Quand elle est désactivée, les plugins ne sont pas découverts, et vous ne pouvez près ajouter de nouveaux plugins au paramètre <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Découvrir des plugins",
"DevDetail_Children_Title": "Relations avec les éléments inférieurs",
@@ -117,7 +119,7 @@
"DevDetail_Nmap_buttonFast": "Scan rapide",
"DevDetail_Nmap_buttonFast_text": "Scan rapide: analyse moins de ports (100) que le scan par défaut (plusieurs secondes)",
"DevDetail_Nmap_buttonSkipDiscovery": "Passer la découverte d'hôtes",
"DevDetail_Nmap_buttonSkipDiscovery_text": "Passer la découverte d'hôtes (option -PN): scan par défaut sans découvert d'hôtes",
"DevDetail_Nmap_buttonSkipDiscovery_text": "Ignorer la découverte d'hôtes (option -PN) : scan par défaut sans découverte d'hôtes",
"DevDetail_Nmap_resultsLink": "Vous pouvez quitter cette page après lancement du scan. Les resultats seront aussi disponibles dans le fichier <code>app_front.log</code>.",
"DevDetail_Owner_hover": "Possesseur de l'appareil. Texte libre.",
"DevDetail_Periodselect_All": "Toutes les infos",
@@ -208,7 +210,7 @@
"Device_NoData_Help": "Si les appareils n'apparaissent pas après le scan, vérifiez vos paramètres SCAN_SUBNETS et la <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">documentation</a>.",
"Device_NoData_Scanning": "En attente du premier scan - cela peut prendre quelques minutes après le premier paramétrage.",
"Device_NoData_Title": "Aucun appareil trouvé pour le moment",
"Device_NoMatch_Title": "",
"Device_NoMatch_Title": "Aucun appareil ne correspond au filtre actuel",
"Device_Save_Failed": "Erreur à l'enregistrement de l'appareil",
"Device_Save_Unauthorized": "Non autorisé - Jeton d'API invalide",
"Device_Saved_Success": "Appareil enregistré avec succès",
@@ -232,7 +234,7 @@
"Device_TableHead_FQDN": "Nom de domaine FQDN",
"Device_TableHead_Favorite": "Favori",
"Device_TableHead_FirstSession": "Première session",
"Device_TableHead_Flapping": "",
"Device_TableHead_Flapping": "Bagotage",
"Device_TableHead_GUID": "GUID",
"Device_TableHead_Group": "Groupe",
"Device_TableHead_IPv4": "IPv4",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "Nom",
"Device_TableHead_NetworkSite": "Site Réseau",
"Device_TableHead_Owner": "Propriétaire",
"Device_TableHead_ParentRelType": "Type de relation",
"Device_TableHead_Parent_MAC": "Nœud réseau principal",
"Device_TableHead_ParentRelType": "Relation",
"Device_TableHead_Parent_MAC": "Nœud principal",
"Device_TableHead_Port": "Port",
"Device_TableHead_PresentLastScan": "Présence",
"Device_TableHead_ReqNicsOnline": "Nécessite que l'interface réseau (NIC) soit connectée",
@@ -337,13 +339,14 @@
"Gen_Down": "En panne",
"Gen_Error": "Erreur",
"Gen_Filter": "Filtrer",
"Gen_Flapping": "",
"Gen_Flapping": "Bagotage",
"Gen_Generate": "Générer",
"Gen_InvalidMac": "Adresse MAC invalide.",
"Gen_Invalid_Value": "Une valeur invalide a été renseignée",
"Gen_LockedDB": "Erreur - La base de données est peut-être verrouillée - Vérifier avec les outils de dév via F12 -> Console ou essayer plus tard.",
"Gen_NetworkMask": "Masque réseau",
"Gen_New": "Nouveau",
"Gen_No_Data": "Aucune donnée",
"Gen_Offline": "Hors ligne",
"Gen_Okay": "OK",
"Gen_Online": "En ligne",
@@ -400,7 +403,7 @@
"Login_Toggle_Info_headline": "Information sur le mot de passe",
"Maint_PurgeLog": "Nettoyer les logs",
"Maint_RestartServer": "Relancer le serveur",
"Maint_Restart_Server_noti_text": "Êtes-vous sûr de vouloir relancer le serveur back-end? Cela peut causer des incohérences avec l'application. Sauvegarder vos paramètres en premier lieu. <br/> <br/> Remarque: cela peut prendre quelques minutes.",
"Maint_Restart_Server_noti_text": "Êtes-vous sûr de vouloir relancer le serveur back-end? Cela peut causer des incohérences avec l'application. Sauvegarder vos paramètres en premier lieu. <br/> <br/> Remarque : cela peut prendre quelques minutes.",
"Maintenance_InitCheck": "Vérification initiale",
"Maintenance_InitCheck_Checking": "Vérification…",
"Maintenance_InitCheck_QuickSetupGuide": "Assurez-vous de suivre le <a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">guide de démarrage rapide</a>.",
@@ -475,7 +478,7 @@
"Maintenance_Tool_del_unknowndev_noti_text": "Êtes-vous sûr de vouloir supprimer tous les appareils inconnus et sans nom trouvé?",
"Maintenance_Tool_del_unknowndev_text": "Avant d'utiliser cette fonction, veuillez effectuer une sauvegarde. La suppression ne peut pas être annulée. Tous les appareils nommés (inconnus) seront supprimés de la base de données.",
"Maintenance_Tool_del_unlockFields_selecteddev_text": "Cela va déverrouiller les champs verrouillés par l'utilisateur (LOCKED/USER) des appareils sélectionnés. Cette action ne peut pas être annulée.",
"Maintenance_Tool_displayed_columns_text": "Changer la visibilité et l'ordre des colonnes dans la page <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i>appareils</b></a> page.",
"Maintenance_Tool_displayed_columns_text": "Changer la visibilité et l'ordre des colonnes dans la page <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i>Appareils</b></a>.",
"Maintenance_Tool_drag_me": "Déplacez-moi pour réordonner les colonnes.",
"Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text",
"Maintenance_Tool_purgebackup": "Supprimer les sauvegardes",
@@ -568,7 +571,7 @@
"Network_ManageEdit_Type_text": "-- Sélectionner le type --",
"Network_ManageLeaf": "Gérer l'assignation",
"Network_ManageUnassign": "Désassigner",
"Network_NoAssignedDevices": "Ce nœud réseau ne contient pas d'appareils assignés. Vous pouvez en assigner un ci-dessous, ou en allant dans l'onglet <b><i class=\"fa fa-info-circle\"></i> Détails</b> d'un appareil depuis le menu <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Appareils</b></a>, et assigner cet équipement à un <b><i class=\"fa fa-server\"></i> Nœud (MAC)</b> réseau et à un <b><i class=\"fa fa-ethernet\"></i>Port</b>.",
"Network_NoAssignedDevices": "Ce nœud réseau ne contient pas d'appareils assignés. Vous pouvez en assigner un ci-dessous, ou en allant dans l'onglet <b><i class=\"fa fa-info-circle\"></i>Détails</b> d'un appareil depuis le menu <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i>Appareils</b></a>, et assigner cet équipement à un <b><i class=\"fa fa-server\"></i>Nœud (MAC)</b> réseau et à un <b><i class=\"fa fa-ethernet\"></i>Port</b>.",
"Network_NoDevices": "Pas d'appareil à configurer",
"Network_Node": "Nœud réseau",
"Network_Node_Name": "Nom du nœud",
@@ -591,8 +594,8 @@
"PIALERT_WEB_PROTECTION_name": "Activer la connexion par login",
"PLUGINS_KEEP_HIST_description": "Combien d'entrées de résultats de scan doivent être conservés dans l'historique des plugins (par plugin, pas par appareil).",
"PLUGINS_KEEP_HIST_name": "Historique des plugins",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "Taille maximale du SQLite WAL (Write-Ahead Log) en Mo avant le déclenchement automatique des points de contrôle. Des valeurs basses (10-20 Mo) réduisent l'utilisation du disque/stockage mais augmentent l'utilisation du CPU durant ces scans. Des valeurs élevées (50-100 Mo) réduisent les pics CPU durant les opérations mais peuvent utiliser plus de RAM et d'espace disque. Par défaut, <code>50 Mo</code> est un compromis entre ces 2. Utilise pour les systèmes à ressources limitées comme des NAS avec des cartes SD. Redémarrer le serveur pour que le changement soit effective après avoir sauvegardé ce paramètre.",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "Limite de taille du WAL (Mo)",
"Plugins_DeleteAll": "Tout supprimer (ne prend pas en compte les filtres)",
"Plugins_Filters_Mac": "Filtrer par MAC",
"Plugins_History": "Historique des événements",

View File

@@ -0,0 +1,811 @@
{
"API_CUSTOM_SQL_description": "",
"API_CUSTOM_SQL_name": "",
"API_TOKEN_description": "",
"API_TOKEN_name": "",
"API_display_name": "",
"API_icon": "",
"About_Design": "",
"About_Exit": "",
"About_Title": "",
"AppEvents_AppEventProcessed": "",
"AppEvents_DateTimeCreated": "",
"AppEvents_Extra": "",
"AppEvents_GUID": "",
"AppEvents_Helper1": "",
"AppEvents_Helper2": "",
"AppEvents_Helper3": "",
"AppEvents_ObjectForeignKey": "",
"AppEvents_ObjectIndex": "",
"AppEvents_ObjectIsArchived": "",
"AppEvents_ObjectIsNew": "",
"AppEvents_ObjectPlugin": "",
"AppEvents_ObjectPrimaryID": "",
"AppEvents_ObjectSecondaryID": "",
"AppEvents_ObjectStatus": "",
"AppEvents_ObjectStatusColumn": "",
"AppEvents_ObjectType": "",
"AppEvents_Plugin": "",
"AppEvents_Type": "",
"BACKEND_API_URL_description": "",
"BACKEND_API_URL_name": "",
"BackDevDetail_Actions_Ask_Run": "",
"BackDevDetail_Actions_Not_Registered": "",
"BackDevDetail_Actions_Title_Run": "",
"BackDevDetail_Copy_Ask": "",
"BackDevDetail_Copy_Title": "",
"BackDevDetail_Tools_WOL_error": "",
"BackDevDetail_Tools_WOL_okay": "",
"BackDevices_Arpscan_disabled": "",
"BackDevices_Arpscan_enabled": "",
"BackDevices_Backup_CopError": "",
"BackDevices_Backup_Failed": "",
"BackDevices_Backup_okay": "",
"BackDevices_DBTools_DelDevError_a": "",
"BackDevices_DBTools_DelDevError_b": "",
"BackDevices_DBTools_DelDev_a": "",
"BackDevices_DBTools_DelDev_b": "",
"BackDevices_DBTools_DelEvents": "",
"BackDevices_DBTools_DelEventsError": "",
"BackDevices_DBTools_ImportCSV": "",
"BackDevices_DBTools_ImportCSVError": "",
"BackDevices_DBTools_ImportCSVMissing": "",
"BackDevices_DBTools_Purge": "",
"BackDevices_DBTools_UpdDev": "",
"BackDevices_DBTools_UpdDevError": "",
"BackDevices_DBTools_Upgrade": "",
"BackDevices_DBTools_UpgradeError": "",
"BackDevices_Device_UpdDevError": "",
"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": "",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
"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": "",
"DevDetail_EveandAl_NewDevice": "",
"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_Loading": "",
"DevDetail_MainInfo_Comments": "",
"DevDetail_MainInfo_Favorite": "",
"DevDetail_MainInfo_Group": "",
"DevDetail_MainInfo_Location": "",
"DevDetail_MainInfo_Name": "",
"DevDetail_MainInfo_Network": "",
"DevDetail_MainInfo_Network_Port": "",
"DevDetail_MainInfo_Network_Site": "",
"DevDetail_MainInfo_Network_Title": "",
"DevDetail_MainInfo_Owner": "",
"DevDetail_MainInfo_SSID": "",
"DevDetail_MainInfo_Title": "",
"DevDetail_MainInfo_Type": "",
"DevDetail_MainInfo_Vendor": "",
"DevDetail_MainInfo_mac": "",
"DevDetail_NavToChildNode": "",
"DevDetail_Network_Node_hover": "",
"DevDetail_Network_Port_hover": "",
"DevDetail_Nmap_Scans": "",
"DevDetail_Nmap_Scans_desc": "",
"DevDetail_Nmap_buttonDefault": "",
"DevDetail_Nmap_buttonDefault_text": "",
"DevDetail_Nmap_buttonDetail": "",
"DevDetail_Nmap_buttonDetail_text": "",
"DevDetail_Nmap_buttonFast": "",
"DevDetail_Nmap_buttonFast_text": "",
"DevDetail_Nmap_buttonSkipDiscovery": "",
"DevDetail_Nmap_buttonSkipDiscovery_text": "",
"DevDetail_Nmap_resultsLink": "",
"DevDetail_Owner_hover": "",
"DevDetail_Periodselect_All": "",
"DevDetail_Periodselect_LastMonth": "",
"DevDetail_Periodselect_LastWeek": "",
"DevDetail_Periodselect_LastYear": "",
"DevDetail_Periodselect_today": "",
"DevDetail_Run_Actions_Title": "",
"DevDetail_Run_Actions_Tooltip": "",
"DevDetail_SessionInfo_FirstSession": "",
"DevDetail_SessionInfo_LastIP": "",
"DevDetail_SessionInfo_LastSession": "",
"DevDetail_SessionInfo_StaticIP": "",
"DevDetail_SessionInfo_Status": "",
"DevDetail_SessionInfo_Title": "",
"DevDetail_SessionTable_Additionalinfo": "",
"DevDetail_SessionTable_Connection": "",
"DevDetail_SessionTable_Disconnection": "",
"DevDetail_SessionTable_Duration": "",
"DevDetail_SessionTable_IP": "",
"DevDetail_SessionTable_Order": "",
"DevDetail_Shortcut_CurrentStatus": "",
"DevDetail_Shortcut_DownAlerts": "",
"DevDetail_Shortcut_Presence": "",
"DevDetail_Shortcut_Sessions": "",
"DevDetail_Tab_Details": "",
"DevDetail_Tab_Events": "",
"DevDetail_Tab_EventsTableDate": "",
"DevDetail_Tab_EventsTableEvent": "",
"DevDetail_Tab_EventsTableIP": "",
"DevDetail_Tab_EventsTableInfo": "",
"DevDetail_Tab_Nmap": "",
"DevDetail_Tab_NmapEmpty": "",
"DevDetail_Tab_NmapTableExtra": "",
"DevDetail_Tab_NmapTableHeader": "",
"DevDetail_Tab_NmapTableIndex": "",
"DevDetail_Tab_NmapTablePort": "",
"DevDetail_Tab_NmapTableService": "",
"DevDetail_Tab_NmapTableState": "",
"DevDetail_Tab_NmapTableText": "",
"DevDetail_Tab_NmapTableTime": "",
"DevDetail_Tab_Plugins": "",
"DevDetail_Tab_Presence": "",
"DevDetail_Tab_Sessions": "",
"DevDetail_Tab_Tools": "",
"DevDetail_Tab_Tools_Internet_Info_Description": "",
"DevDetail_Tab_Tools_Internet_Info_Error": "",
"DevDetail_Tab_Tools_Internet_Info_Start": "",
"DevDetail_Tab_Tools_Internet_Info_Title": "",
"DevDetail_Tab_Tools_Nslookup_Description": "",
"DevDetail_Tab_Tools_Nslookup_Error": "",
"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_Traceroute_Error": "",
"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_button_AddIcon": "",
"DevDetail_button_AddIcon_Help": "",
"DevDetail_button_AddIcon_Tooltip": "",
"DevDetail_button_Delete": "",
"DevDetail_button_DeleteEvents": "",
"DevDetail_button_DeleteEvents_Warning": "",
"DevDetail_button_Delete_ask": "",
"DevDetail_button_OverwriteIcons": "",
"DevDetail_button_OverwriteIcons_Tooltip": "",
"DevDetail_button_OverwriteIcons_Warning": "",
"DevDetail_button_Reset": "",
"DevDetail_button_Save": "",
"DeviceEdit_ValidMacIp": "",
"Device_MultiEdit": "",
"Device_MultiEdit_Backup": "",
"Device_MultiEdit_Fields": "",
"Device_MultiEdit_MassActions": "",
"Device_MultiEdit_No_Devices": "",
"Device_MultiEdit_Tooltip": "",
"Device_NextScan_Imminent": "",
"Device_NextScan_In": "",
"Device_NoData_Help": "",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
"Device_Save_Failed": "",
"Device_Save_Unauthorized": "",
"Device_Saved_Success": "",
"Device_Saved_Unexpected": "",
"Device_Scanning": "",
"Device_Searchbox": "",
"Device_Shortcut_AllDevices": "",
"Device_Shortcut_AllNodes": "",
"Device_Shortcut_Archived": "",
"Device_Shortcut_Connected": "",
"Device_Shortcut_Devices": "",
"Device_Shortcut_DownAlerts": "",
"Device_Shortcut_DownOnly": "",
"Device_Shortcut_Favorites": "",
"Device_Shortcut_NewDevices": "",
"Device_Shortcut_OnlineChart": "",
"Device_Shortcut_Unstable": "",
"Device_TableHead_AlertDown": "",
"Device_TableHead_Connected_Devices": "",
"Device_TableHead_CustomProps": "",
"Device_TableHead_FQDN": "",
"Device_TableHead_Favorite": "",
"Device_TableHead_FirstSession": "",
"Device_TableHead_Flapping": "",
"Device_TableHead_GUID": "",
"Device_TableHead_Group": "",
"Device_TableHead_IPv4": "",
"Device_TableHead_IPv6": "",
"Device_TableHead_Icon": "",
"Device_TableHead_LastIP": "",
"Device_TableHead_LastIPOrder": "",
"Device_TableHead_LastSession": "",
"Device_TableHead_Location": "",
"Device_TableHead_MAC": "",
"Device_TableHead_MAC_full": "",
"Device_TableHead_Name": "",
"Device_TableHead_NetworkSite": "",
"Device_TableHead_Owner": "",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_Parent_MAC": "",
"Device_TableHead_Port": "",
"Device_TableHead_PresentLastScan": "",
"Device_TableHead_ReqNicsOnline": "",
"Device_TableHead_RowID": "",
"Device_TableHead_Rowid": "",
"Device_TableHead_SSID": "",
"Device_TableHead_SourcePlugin": "",
"Device_TableHead_Status": "",
"Device_TableHead_SyncHubNodeName": "",
"Device_TableHead_Type": "",
"Device_TableHead_Vendor": "",
"Device_TableHead_Vlan": "",
"Device_Table_Not_Network_Device": "",
"Device_Table_info": "",
"Device_Table_nav_next": "",
"Device_Table_nav_prev": "",
"Device_Tablelenght": "",
"Device_Tablelenght_all": "",
"Device_Title": "",
"Devices_Filters": "",
"ENABLE_PLUGINS_description": "",
"ENABLE_PLUGINS_name": "",
"ENCRYPTION_KEY_description": "",
"ENCRYPTION_KEY_name": "",
"Email_display_name": "",
"Email_icon": "",
"Events_Loading": "",
"Events_Periodselect_All": "",
"Events_Periodselect_LastMonth": "",
"Events_Periodselect_LastWeek": "",
"Events_Periodselect_LastYear": "",
"Events_Periodselect_today": "",
"Events_Searchbox": "",
"Events_Shortcut_AllEvents": "",
"Events_Shortcut_DownAlerts": "",
"Events_Shortcut_Events": "",
"Events_Shortcut_MissSessions": "",
"Events_Shortcut_NewDevices": "",
"Events_Shortcut_Sessions": "",
"Events_Shortcut_VoidSessions": "",
"Events_TableHead_AdditionalInfo": "",
"Events_TableHead_Connection": "",
"Events_TableHead_Date": "",
"Events_TableHead_Device": "",
"Events_TableHead_Disconnection": "",
"Events_TableHead_Duration": "",
"Events_TableHead_DurationOrder": "",
"Events_TableHead_EventType": "",
"Events_TableHead_IP": "",
"Events_TableHead_IPOrder": "",
"Events_TableHead_Order": "",
"Events_TableHead_Owner": "",
"Events_TableHead_PendingAlert": "",
"Events_Table_info": "",
"Events_Table_nav_next": "",
"Events_Table_nav_prev": "",
"Events_Tablelenght": "",
"Events_Tablelenght_all": "",
"Events_Title": "",
"FakeMAC_hover": "",
"FieldLock_Error": "",
"FieldLock_Lock_Tooltip": "",
"FieldLock_Locked": "",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_Source_Label": "",
"FieldLock_Unlock_Tooltip": "",
"FieldLock_Unlocked": "",
"GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "",
"Gen_Action": "",
"Gen_Add": "",
"Gen_AddDevice": "",
"Gen_Add_All": "",
"Gen_All_Devices": "",
"Gen_Archived": "",
"Gen_AreYouSure": "",
"Gen_Backup": "",
"Gen_Cancel": "",
"Gen_Change": "",
"Gen_Copy": "",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "",
"Gen_Delete": "",
"Gen_DeleteAll": "",
"Gen_Description": "",
"Gen_Down": "",
"Gen_Error": "",
"Gen_Filter": "",
"Gen_Flapping": "",
"Gen_Generate": "",
"Gen_InvalidMac": "",
"Gen_Invalid_Value": "",
"Gen_LockedDB": "",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "",
"Gen_Okay": "",
"Gen_Online": "",
"Gen_Purge": "",
"Gen_ReadDocs": "",
"Gen_Remove_All": "",
"Gen_Remove_Last": "",
"Gen_Reset": "",
"Gen_Restore": "",
"Gen_Run": "",
"Gen_Save": "",
"Gen_Saved": "",
"Gen_Search": "",
"Gen_Select": "",
"Gen_SelectIcon": "",
"Gen_SelectToPreview": "",
"Gen_Selected_Devices": "",
"Gen_Sleeping": "",
"Gen_Subnet": "",
"Gen_Switch": "",
"Gen_Upd": "",
"Gen_Upd_Fail": "",
"Gen_Update": "",
"Gen_Update_Value": "",
"Gen_ValidIcon": "",
"Gen_Warning": "",
"Gen_Work_In_Progress": "",
"Gen_create_new_device": "",
"Gen_create_new_device_info": "",
"General_display_name": "",
"General_icon": "",
"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": "",
"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_InitCheck": "",
"Maintenance_InitCheck_Checking": "",
"Maintenance_InitCheck_QuickSetupGuide": "",
"Maintenance_InitCheck_Success": "",
"Maintenance_ReCheck": "",
"Maintenance_Running_Version": "",
"Maintenance_Status": "",
"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": "",
"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_UnlockFields": "",
"Maintenance_Tool_UnlockFields_noti": "",
"Maintenance_Tool_UnlockFields_noti_text": "",
"Maintenance_Tool_UnlockFields_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_clearSourceFields_selected": "",
"Maintenance_Tool_clearSourceFields_selected_noti": "",
"Maintenance_Tool_clearSourceFields_selected_text": "",
"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_del_unlockFields_selecteddev_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_unlockFields_selecteddev": "",
"Maintenance_Tool_unlockFields_selecteddev_noti": "",
"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": "",
"Navigation_AppEvents": "",
"Navigation_Devices": "",
"Navigation_Donations": "",
"Navigation_Events": "",
"Navigation_Integrations": "",
"Navigation_Maintenance": "",
"Navigation_Monitoring": "",
"Navigation_Network": "",
"Navigation_Notifications": "",
"Navigation_Plugins": "",
"Navigation_Presence": "",
"Navigation_Report": "",
"Navigation_Settings": "",
"Navigation_SystemInfo": "",
"Navigation_Workflows": "",
"Network_Assign": "",
"Network_Cant_Assign": "",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "",
"Network_Connected": "",
"Network_Devices": "",
"Network_ManageAdd": "",
"Network_ManageAdd_Name": "",
"Network_ManageAdd_Name_text": "",
"Network_ManageAdd_Port": "",
"Network_ManageAdd_Port_text": "",
"Network_ManageAdd_Submit": "",
"Network_ManageAdd_Type": "",
"Network_ManageAdd_Type_text": "",
"Network_ManageAssign": "",
"Network_ManageDel": "",
"Network_ManageDel_Name": "",
"Network_ManageDel_Name_text": "",
"Network_ManageDel_Submit": "",
"Network_ManageDevices": "",
"Network_ManageEdit": "",
"Network_ManageEdit_ID": "",
"Network_ManageEdit_ID_text": "",
"Network_ManageEdit_Name": "",
"Network_ManageEdit_Name_text": "",
"Network_ManageEdit_Port": "",
"Network_ManageEdit_Port_text": "",
"Network_ManageEdit_Submit": "",
"Network_ManageEdit_Type": "",
"Network_ManageEdit_Type_text": "",
"Network_ManageLeaf": "",
"Network_ManageUnassign": "",
"Network_NoAssignedDevices": "",
"Network_NoDevices": "",
"Network_Node": "",
"Network_Node_Name": "",
"Network_Parent": "",
"Network_Root": "",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "",
"Network_Table_IP": "",
"Network_Table_State": "",
"Network_Title": "",
"Network_UnassignedDevices": "",
"Notifications_All": "",
"Notifications_Mark_All_Read": "",
"PIALERT_WEB_PASSWORD_description": "",
"PIALERT_WEB_PASSWORD_name": "",
"PIALERT_WEB_PROTECTION_description": "",
"PIALERT_WEB_PROTECTION_name": "",
"PLUGINS_KEEP_HIST_description": "",
"PLUGINS_KEEP_HIST_name": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "",
"Plugins_DeleteAll": "",
"Plugins_Filters_Mac": "",
"Plugins_History": "",
"Plugins_Obj_DeleteListed": "",
"Plugins_Objects": "",
"Plugins_Out_of": "",
"Plugins_Unprocessed_Events": "",
"Plugins_no_control": "",
"Presence_CalHead_day": "",
"Presence_CalHead_lang": "",
"Presence_CalHead_month": "",
"Presence_CalHead_quarter": "",
"Presence_CalHead_week": "",
"Presence_CalHead_year": "",
"Presence_CallHead_Devices": "",
"Presence_Key_OnlineNow": "",
"Presence_Key_OnlineNow_desc": "",
"Presence_Key_OnlinePast": "",
"Presence_Key_OnlinePastMiss": "",
"Presence_Key_OnlinePastMiss_desc": "",
"Presence_Key_OnlinePast_desc": "",
"Presence_Loading": "",
"Presence_Shortcut_AllDevices": "",
"Presence_Shortcut_Archived": "",
"Presence_Shortcut_Connected": "",
"Presence_Shortcut_Devices": "",
"Presence_Shortcut_DownAlerts": "",
"Presence_Shortcut_Favorites": "",
"Presence_Shortcut_NewDevices": "",
"Presence_Title": "",
"REFRESH_FQDN_description": "",
"REFRESH_FQDN_name": "",
"REPORT_DASHBOARD_URL_description": "",
"REPORT_DASHBOARD_URL_name": "",
"REPORT_ERROR": "",
"REPORT_MAIL_description": "",
"REPORT_MAIL_name": "",
"REPORT_TITLE": "",
"RandomMAC_hover": "",
"Reports_Sent_Log": "",
"SCAN_SUBNETS_description": "",
"SCAN_SUBNETS_name": "",
"SYSTEM_TITLE": "",
"Setting_Override": "",
"Setting_Override_Description": "",
"Settings_Metadata_Toggle": "",
"Settings_Show_Description": "",
"Settings_device_Scanners_desync": "",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "",
"Systeminfo_CPU_Cores": "",
"Systeminfo_CPU_Name": "",
"Systeminfo_CPU_Speed": "",
"Systeminfo_CPU_Temp": "",
"Systeminfo_CPU_Vendor": "",
"Systeminfo_Client_Resolution": "",
"Systeminfo_Client_User_Agent": "",
"Systeminfo_General": "",
"Systeminfo_General_Date": "",
"Systeminfo_General_Date2": "",
"Systeminfo_General_Full_Date": "",
"Systeminfo_General_TimeZone": "",
"Systeminfo_Memory": "",
"Systeminfo_Memory_Total_Memory": "",
"Systeminfo_Memory_Usage": "",
"Systeminfo_Memory_Usage_Percent": "",
"Systeminfo_Motherboard": "",
"Systeminfo_Motherboard_BIOS": "",
"Systeminfo_Motherboard_BIOS_Date": "",
"Systeminfo_Motherboard_BIOS_Vendor": "",
"Systeminfo_Motherboard_Manufactured": "",
"Systeminfo_Motherboard_Name": "",
"Systeminfo_Motherboard_Revision": "",
"Systeminfo_Network": "",
"Systeminfo_Network_Accept_Encoding": "",
"Systeminfo_Network_Accept_Language": "",
"Systeminfo_Network_Connection_Port": "",
"Systeminfo_Network_HTTP_Host": "",
"Systeminfo_Network_HTTP_Referer": "",
"Systeminfo_Network_HTTP_Referer_String": "",
"Systeminfo_Network_Hardware": "",
"Systeminfo_Network_Hardware_Interface_Mask": "",
"Systeminfo_Network_Hardware_Interface_Name": "",
"Systeminfo_Network_Hardware_Interface_RX": "",
"Systeminfo_Network_Hardware_Interface_TX": "",
"Systeminfo_Network_IP": "",
"Systeminfo_Network_IP_Connection": "",
"Systeminfo_Network_IP_Server": "",
"Systeminfo_Network_MIME": "",
"Systeminfo_Network_Request_Method": "",
"Systeminfo_Network_Request_Time": "",
"Systeminfo_Network_Request_URI": "",
"Systeminfo_Network_Secure_Connection": "",
"Systeminfo_Network_Secure_Connection_String": "",
"Systeminfo_Network_Server_Name": "",
"Systeminfo_Network_Server_Name_String": "",
"Systeminfo_Network_Server_Query": "",
"Systeminfo_Network_Server_Query_String": "",
"Systeminfo_Network_Server_Version": "",
"Systeminfo_Services": "",
"Systeminfo_Services_Description": "",
"Systeminfo_Services_Name": "",
"Systeminfo_Storage": "",
"Systeminfo_Storage_Device": "",
"Systeminfo_Storage_Mount": "",
"Systeminfo_Storage_Size": "",
"Systeminfo_Storage_Type": "",
"Systeminfo_Storage_Usage": "",
"Systeminfo_Storage_Usage_Free": "",
"Systeminfo_Storage_Usage_Mount": "",
"Systeminfo_Storage_Usage_Total": "",
"Systeminfo_Storage_Usage_Used": "",
"Systeminfo_System": "",
"Systeminfo_System_AVG": "",
"Systeminfo_System_Architecture": "",
"Systeminfo_System_Kernel": "",
"Systeminfo_System_OSVersion": "",
"Systeminfo_System_Running_Processes": "",
"Systeminfo_System_System": "",
"Systeminfo_System_Uname": "",
"Systeminfo_System_Uptime": "",
"Systeminfo_This_Client": "",
"Systeminfo_USB_Devices": "",
"TICKER_MIGRATE_TO_NETALERTX": "",
"TIMEZONE_description": "",
"TIMEZONE_name": "",
"UI_DEV_SECTIONS_description": "",
"UI_DEV_SECTIONS_name": "",
"UI_ICONS_description": "",
"UI_ICONS_name": "",
"UI_LANG_description": "",
"UI_LANG_name": "",
"UI_MY_DEVICES_description": "",
"UI_MY_DEVICES_name": "",
"UI_NOT_RANDOM_MAC_description": "",
"UI_NOT_RANDOM_MAC_name": "",
"UI_PRESENCE_description": "",
"UI_PRESENCE_name": "",
"UI_REFRESH_description": "",
"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_tooltip": "",
"add_option_event_tooltip": "",
"copy_icons_event_tooltip": "",
"devices_old": "",
"general_event_description": "",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "",
"report_guid_missing": "",
"report_select_format": "",
"report_time": "",
"run_event_tooltip": "",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "",
"settings_device_scanners": "",
"settings_device_scanners_icon": "",
"settings_device_scanners_info": "",
"settings_device_scanners_label": "",
"settings_enabled": "",
"settings_enabled_icon": "",
"settings_expand_all": "",
"settings_imported": "",
"settings_imported_label": "",
"settings_missing": "",
"settings_missing_block": "",
"settings_old": "",
"settings_other_scanners": "",
"settings_other_scanners_icon": "",
"settings_other_scanners_label": "",
"settings_publishers": "",
"settings_publishers_icon": "",
"settings_publishers_info": "",
"settings_publishers_label": "",
"settings_readonly": "",
"settings_saved": "",
"settings_system_icon": "",
"settings_system_label": "",
"settings_update_item_warning": "",
"test_event_tooltip": ""
}

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "",
"DAYS_TO_KEEP_EVENTS_description": "",
"DAYS_TO_KEEP_EVENTS_name": "",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "",
"Gen_Okay": "",
"Gen_Online": "",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "Impossibile rimuovere, è necessaria almeno una proprietà.",
"DAYS_TO_KEEP_EVENTS_description": "Questa è un'impostazione di manutenzione. Specifica il numero di giorni delle voci degli eventi che verranno conservati. Tutti gli eventi più vecchi verranno eliminati periodicamente. Si applica anche alla cronologia degli eventi del plugin (Plugin Events History).",
"DAYS_TO_KEEP_EVENTS_name": "Elimina eventi più vecchi di",
"DEEP_SLEEP_description": "Riduce l'utilizzo della CPU estendendo i tempi di attesa tra i cicli di elaborazione. Quando questa opzione è abilitata, le scansioni potrebbero subire ritardi fino a 1 minuto e l'interfaccia utente potrebbe risultare meno reattiva.",
"DEEP_SLEEP_name": "Sonno profondo",
"DISCOVER_PLUGINS_description": "Disattiva questa opzione per velocizzare l'inizializzazione e il salvataggio delle impostazioni. Quando è disattivata, i plugin non vengono scoperti e non puoi aggiungere nuovi plugin all'impostazione <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Scopri i plugin",
"DevDetail_Children_Title": "Relazioni tra figli",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "Nome",
"Device_TableHead_NetworkSite": "Sito di rete",
"Device_TableHead_Owner": "Proprietario",
"Device_TableHead_ParentRelType": "Tipo di relazione",
"Device_TableHead_Parent_MAC": "Nodo di rete principale",
"Device_TableHead_ParentRelType": "Relazione",
"Device_TableHead_Parent_MAC": "Nodo principale",
"Device_TableHead_Port": "Porta",
"Device_TableHead_PresentLastScan": "Presenza",
"Device_TableHead_ReqNicsOnline": "Richiedi NIC online",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "ERRORE: il DB potrebbe essere bloccato, controlla F12 Strumenti di sviluppo -> Console o riprova più tardi.",
"Gen_NetworkMask": "Maschera di rete",
"Gen_New": "Nuovo",
"Gen_No_Data": "Nessun dato",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -538,7 +541,7 @@
"Navigation_Workflows": "Workflow",
"Network_Assign": "Connetti al nodo di rete <i class=\"fa fa-server\"></i> sopra",
"Network_Cant_Assign": "Impossibile assegnare il nodo Internet root come nodo foglia figlio.",
"Network_Cant_Assign_No_Node_Selected": "Impossibile assegnare, nessun nodo padre selezionato.",
"Network_Cant_Assign_No_Node_Selected": "Impossibile assegnare, nessun nodo principale selezionato.",
"Network_Configuration_Error": "Errore di configurazione",
"Network_Connected": "Dispositivi connessi",
"Network_Devices": "Dispositivi di rete",

View File

@@ -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_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 トークン。生成するか、任意の値を入力してください。リクエストヘッダーで送信され、<code>SYNC</code>プラグイン、GraphQLサーバー、その他のAPIエンドポイントで使用されます。<a href=\"https://docs.netalertx.com/API\" target=\"_blank\">APIドキュメント</a>に記載の通り、API エンドポイントを使用して独自の連携機能を作成できます。",
"API_TOKEN_description": "安全な通信のための API トークン。生成するか、任意の値を入力してください。リクエストヘッダーで送信され、<code>SYNC</code> プラグイン、GraphQLサーバー、その他のAPIエンドポイントで使用されます。<a href=\"https://docs.netalertx.com/API\" target=\"_blank\">APIドキュメント</a> に記載の通り、API エンドポイントを使用して独自の連携機能を作成できます。",
"API_TOKEN_name": "APIトークン",
"API_display_name": "API",
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
@@ -27,7 +27,7 @@
"AppEvents_ObjectType": "オブジェクトタイプ",
"AppEvents_Plugin": "プラグイン",
"AppEvents_Type": "種別",
"BACKEND_API_URL_description": "フロントエンドからバックエンドに通信するために使用します。 デフォルトでは<code>/server</code>に設定されており、通常変更する必要はありません。",
"BACKEND_API_URL_description": "フロントエンドからバックエンドに通信するために使用します。デフォルトでは <code>/server</code> に設定されており、通常変更する必要はありません。",
"BACKEND_API_URL_name": "バックエンド API URL",
"BackDevDetail_Actions_Ask_Run": "このアクションを実行してよろしいですか?",
"BackDevDetail_Actions_Not_Registered": "登録されていないアクション: ",
@@ -61,12 +61,14 @@
"BackDevices_Restore_okay": "復元が正常に完了しました。",
"BackDevices_darkmode_disabled": "ダークモード無効化",
"BackDevices_darkmode_enabled": "ダークモード有効化",
"CLEAR_NEW_FLAG_description": "有効にした場合(<code>0</code>で無効)、<b>新規デバイス</b>のフラグは<b>初回検知時刻</b>から指定された時間1時間単位が経過すると自動的に解除されます。",
"CLEAR_NEW_FLAG_description": "有効にした場合(<code>0</code> で無効)、<b>新規デバイス</b> のフラグは <b>初回検知時刻</b> から指定された時間1時間単位が経過すると自動的に解除されます。",
"CLEAR_NEW_FLAG_name": "新規フラグの解除",
"CustProps_cant_remove": "削除できません。少なくとも1つのプロパティが必要です。",
"DAYS_TO_KEEP_EVENTS_description": "これはメンテナンス設定です。イベントエントリを保持する日数を指定します。それより古いイベントは定期的に削除されます。プラグインイベント履歴にも適用されます。",
"DAYS_TO_KEEP_EVENTS_name": "古いイベントの削除",
"DISCOVER_PLUGINS_description": "このオプションを無効にすると、初期化と設定の保存が高速化されます。無効にした場合、プラグインは検出されず、<code>LOADED_PLUGINS</code>設定に新しいプラグインを追加することはできません。",
"DEEP_SLEEP_description": "処理サイクル間のアイドル待機時間を延長することで、CPU使用率を低減します。この機能を有効にすると、スキャンが最大1分間遅延したり、UIの反応が悪くなったりする場合があります。",
"DEEP_SLEEP_name": "ディープスリープ",
"DISCOVER_PLUGINS_description": "このオプションを無効にすると、初期化と設定の保存が高速化されます。無効にした場合、プラグインは検出されず、<code>LOADED_PLUGINS</code> 設定に新しいプラグインを追加することはできません。",
"DISCOVER_PLUGINS_name": "プラグインの検出",
"DevDetail_Children_Title": "親子関係",
"DevDetail_Copy_Device_Title": "デバイスから詳細をコピー",
@@ -95,8 +97,8 @@
"DevDetail_MainInfo_Group": "グループ",
"DevDetail_MainInfo_Location": "位置",
"DevDetail_MainInfo_Name": "名前",
"DevDetail_MainInfo_Network": "<i class=\"fa fa-server\"></i>ードMAC",
"DevDetail_MainInfo_Network_Port": "<i class=\"fa fa-ethernet\"></i>ポート",
"DevDetail_MainInfo_Network": "<i class=\"fa fa-server\"></i> ードMAC",
"DevDetail_MainInfo_Network_Port": "<i class=\"fa fa-ethernet\"></i> ポート",
"DevDetail_MainInfo_Network_Site": "サイト",
"DevDetail_MainInfo_Network_Title": "ネットワーク詳細",
"DevDetail_MainInfo_Owner": "所有者",
@@ -118,7 +120,7 @@
"DevDetail_Nmap_buttonFast_text": "高速スキャン: デフォルトのスキャンよりも少ないポート数100をスキャンする数秒",
"DevDetail_Nmap_buttonSkipDiscovery": "ホスト検出をスキップ",
"DevDetail_Nmap_buttonSkipDiscovery_text": "ホスト検出をスキップ(-Pnオプション: ホスト検出なしのデフォルトスキャン",
"DevDetail_Nmap_resultsLink": "スキャン開始後、このページを離れても構いません。結果は<code>app_front.log</code>ファイルにも記録されます。",
"DevDetail_Nmap_resultsLink": "スキャン開始後、このページを離れても構いません。結果は <code>app_front.log</code> ファイルにも記録されます。",
"DevDetail_Owner_hover": "このデバイスを所有者は誰ですか。自由入力欄。",
"DevDetail_Periodselect_All": "全件",
"DevDetail_Periodselect_LastMonth": "先月",
@@ -185,7 +187,7 @@
"DevDetail_Vendor_hover": "ベンダーは自動検出されるべきです。カスタム値を上書きまたは追加できます。",
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
"DevDetail_button_AddIcon": "アイコンの追加",
"DevDetail_button_AddIcon_Help": "SVG HTMLタグまたはFont Awesome HTMLタグのアイコンを貼り付けてください。詳細は<a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">アイコンのドキュメント</a>を参照してください。",
"DevDetail_button_AddIcon_Help": "SVG HTMLタグまたはFont Awesome HTMLタグのアイコンを貼り付けてください。詳細は <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">アイコンのドキュメント</a> を参照してください。",
"DevDetail_button_AddIcon_Tooltip": "このデバイスに、ドロップダウンにない新しいアイコンを追加します。",
"DevDetail_button_Delete": "デバイスの削除",
"DevDetail_button_DeleteEvents": "イベントの削除",
@@ -196,19 +198,19 @@
"DevDetail_button_OverwriteIcons_Warning": "このデバイスと同じデバイス種別を持つすべてのデバイスにアイコンを上書きしてもよろしいですか?",
"DevDetail_button_Reset": "変更をリセット",
"DevDetail_button_Save": "保存",
"DeviceEdit_ValidMacIp": "有効な<b>Mac</b><b>IP</b>アドレスを入力します.",
"DeviceEdit_ValidMacIp": "有効な <b>Mac</b><b>IP</b> アドレスを入力します.",
"Device_MultiEdit": "マルチエディタ",
"Device_MultiEdit_Backup": "注意:以下の項目に誤った値を入力すると設定が破損します。まずデータベースまたはデバイスの設定をバックアップしてください(<a href=\"#\" onclick=\"ExportCSV()\">クリックしてダウンロード<i class=\"fa-solid fa-download fa-bounce\"></i></a>)。このファイルからデバイスを復元する方法については、<a href=\"https://docs.netalertx.com/BACKUPS#scenario-2-corrupted-database\" target=\"_blank\">バックアップのドキュメント</a>を参照してください。変更を適用するには、更新したい各フィールドの<b>保存<i class=\"fa-solid fa-save\"></i></b>アイコンをクリックしてください。",
"Device_MultiEdit_Backup": "注意:以下の項目に誤った値を入力すると設定が破損します。まずデータベースまたはデバイスの設定をバックアップしてください(<a href=\"#\" onclick=\"ExportCSV()\">クリックしてダウンロード <i class=\"fa-solid fa-download fa-bounce\"></i></a>)。このファイルからデバイスを復元する方法については、<a href=\"https://docs.netalertx.com/BACKUPS#scenario-2-corrupted-database\" target=\"_blank\">バックアップのドキュメント</a> を参照してください。変更を適用するには、更新したい各フィールドの <b>保存<i class=\"fa-solid fa-save\"></i></b> アイコンをクリックしてください。",
"Device_MultiEdit_Fields": "フィールドの編集:",
"Device_MultiEdit_MassActions": "大量のアクション:",
"Device_MultiEdit_No_Devices": "デバイスが選択されていません。",
"Device_MultiEdit_Tooltip": "注意。これをクリックすると、左側の値が上記で選択したすべてのデバイスに適用されます。",
"Device_NextScan_Imminent": "まもなく...",
"Device_NextScan_In": "次のスキャンまでおよそ ",
"Device_NoData_Help": "スキャン後にデバイスが表示されない場合は、SCAN_SUBNETS設定と<a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">ドキュメント</a>を確認してください。",
"Device_NoData_Help": "スキャン後にデバイスが表示されない場合は、SCAN_SUBNETS設定と <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">ドキュメント</a> を確認してください。",
"Device_NoData_Scanning": "最初のスキャンを待機中 - 初期設定後、数分かかる場合があります。",
"Device_NoData_Title": "デバイスが見つかりません",
"Device_NoMatch_Title": "",
"Device_NoMatch_Title": "このフィルタ条件に一致するデバイスはありません",
"Device_Save_Failed": "デバイスの保存に失敗しました",
"Device_Save_Unauthorized": "許可されていない - 無効なAPIトークン",
"Device_Saved_Success": "デバイスが正常に保存されました",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "名前",
"Device_TableHead_NetworkSite": "ネットワークサイト",
"Device_TableHead_Owner": "所有者",
"Device_TableHead_ParentRelType": "関係種別",
"Device_TableHead_Parent_MAC": "親ネットワークノード",
"Device_TableHead_ParentRelType": "関係",
"Device_TableHead_Parent_MAC": "親ノード",
"Device_TableHead_Port": "ポート",
"Device_TableHead_PresentLastScan": "検出",
"Device_TableHead_ReqNicsOnline": "OnlineのNICが必要",
@@ -269,7 +271,7 @@
"Device_Tablelenght_all": "全件",
"Device_Title": "デバイス",
"Devices_Filters": "フィルター",
"ENABLE_PLUGINS_description": "<a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">プラグイン</a>機能を有効にします。プラグインの読み込みにはより多くのハードウェアリソースを必要とするため、リソースが限られているシステムでは無効にすることをお勧めします。",
"ENABLE_PLUGINS_description": "<a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">プラグイン</a> 機能を有効にします。プラグインの読み込みにはより多くのハードウェアリソースを必要とするため、リソースが限られているシステムでは無効にすることをお勧めします。",
"ENABLE_PLUGINS_name": "有効プラグイン",
"ENCRYPTION_KEY_description": "データ暗号化キー。",
"ENCRYPTION_KEY_name": "暗号化キー",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "エラー - DBがロックされている可能性があります - F12で開発者ツール→コンソールを確認するか、後で試してください。",
"Gen_NetworkMask": "ネットワークマスク",
"Gen_New": "New",
"Gen_No_Data": "データなし",
"Gen_Offline": "オフライン",
"Gen_Okay": "Ok",
"Gen_Online": "オンライン",
@@ -372,21 +375,21 @@
"Gen_Warning": "警告",
"Gen_Work_In_Progress": "作業中、https://github.com/netalertx/NetAlertX/issues へのフィードバックの好機です",
"Gen_create_new_device": "新規デバイス",
"Gen_create_new_device_info": "デバイスは通常、<a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">プラグイン</a>を使用して検出されます。ただし、特定のケースでは手動でデバイスを追加する必要がある場合があります。具体的なシナリオについては、<a target=\"_blank\" href=\"https://docs.netalertx.com/REMOTE_NETWORKS\">リモートネットワークドキュメント</a>を参照してください。",
"Gen_create_new_device_info": "デバイスは通常、<a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">プラグイン</a> を使用して検出されます。ただし、特定のケースでは手動でデバイスを追加する必要がある場合があります。具体的なシナリオについては、<a target=\"_blank\" href=\"https://docs.netalertx.com/REMOTE_NETWORKS\">リモートネットワークドキュメント</a> を参照してください。",
"General_display_name": "一般",
"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_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://docs.netalertx.com/PLUGINS\">プラグインのドキュメント</a>を参照してください。読み込まれなかったプラグインの設定は失われます。読み込まない設定にできるのは<code>無効化</code>されたプラグインのみです。",
"LOADED_PLUGINS_description": "読み込まれたプラグイン。プラグインの追加はアプリケーションの速度を低下させる可能性があります。有効化が必要なプラグインの種類やスキャンオプションについては、<a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">プラグインのドキュメント</a> を参照してください。読み込まれなかったプラグインの設定は失われます。読み込まない設定にできるのは <code>無効化</code> されたプラグインのみです。",
"LOADED_PLUGINS_name": "読み込まれたプラグイン",
"LOG_LEVEL_description": "この設定により、より詳細なログ出力が有効になります。データベースへのイベント書き込みのデバッグに有用です。",
"LOG_LEVEL_name": "追加のログ出力",
"Loading": "読み込み中…",
"Login_Box": "パスワードを入力してください",
"Login_Default_PWD": "デフォルトパスワード「123456」は有効なままです。",
"Login_Info": "パスワードはSet Passwordプラグインで設定されます。ログインに問題がある場合は<a target=\"_blank\" href=\"https://github.com/netalertx/NetAlertX/tree/main/front/plugins/set_password\">SETPWDのドキュメント</a>を確認してください。",
"Login_Info": "パスワードはSet Passwordプラグインで設定されます。ログインに問題がある場合は <a target=\"_blank\" href=\"https://github.com/netalertx/NetAlertX/tree/main/front/plugins/set_password\">SETPWDのドキュメント</a> を確認してください。",
"Login_Psw-box": "パスワード",
"Login_Psw_alert": "パスワードアラート!",
"Login_Psw_folder": "config フォルダ内。",
@@ -403,31 +406,31 @@
"Maint_Restart_Server_noti_text": "バックエンドサーバーを再起動してもよろしいですか?アプリの不整合が発生する可能性があります。まず設定のバックアップを行ってください。<br/> <br/> 注:この操作には数分かかる場合があります。",
"Maintenance_InitCheck": "初期化チェック",
"Maintenance_InitCheck_Checking": "確認中…",
"Maintenance_InitCheck_QuickSetupGuide": "<a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">クイックセットアップガイド</a>に従ったことを確認してください。",
"Maintenance_InitCheck_QuickSetupGuide": "<a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">クイックセットアップガイド</a> に従ったことを確認してください。",
"Maintenance_InitCheck_Success": "アプリケーションの初期化に成功!",
"Maintenance_ReCheck": "再チェック",
"Maintenance_Running_Version": "インストールバージョン",
"Maintenance_Status": "状態",
"Maintenance_Title": "メンテナンスツール",
"Maintenance_Tool_DownloadConfig": "設定エクスポート",
"Maintenance_Tool_DownloadConfig_text": "<code>app.conf</code>ファイルに保存されている構成設定の完全なバックアップをダウンロードしてください。",
"Maintenance_Tool_DownloadConfig_text": "<code>app.conf</code> ファイルに保存されている構成設定の完全なバックアップをダウンロードしてください。",
"Maintenance_Tool_DownloadWorkflows": "ワークフローのエクスポート",
"Maintenance_Tool_DownloadWorkflows_text": "<code>workflows.json</code>ファイルに保存されているワークフロー設定の完全なバックアップをダウンロードしてください。",
"Maintenance_Tool_DownloadWorkflows_text": "<code>workflows.json</code> ファイルに保存されているワークフロー設定の完全なバックアップをダウンロードしてください。",
"Maintenance_Tool_ExportCSV": "デバイスエクスポートcsv",
"Maintenance_Tool_ExportCSV_noti": "デバイスエクスポートcsv",
"Maintenance_Tool_ExportCSV_noti_text": "CSVファイルを生成してよろしいですか",
"Maintenance_Tool_ExportCSV_text": "ネットワークードとデバイス間の接続関係を含むデバイス一覧を記載したCSVカンマ区切り値ファイルを生成します。この操作は、<a href=\"settings.php#CSVBCKP_header\">CSVバックアップ</a>プラグインを有効化することで実行できます。",
"Maintenance_Tool_ExportCSV_text": "ネットワークードとデバイス間の接続関係を含むデバイス一覧を記載したCSVカンマ区切り値ファイルを生成します。この操作は、<a href=\"settings.php#CSVBCKP_header\">CSVバックアップ</a> プラグインを有効化することで実行できます。",
"Maintenance_Tool_ImportCSV": "デバイスインポートcsv",
"Maintenance_Tool_ImportCSV_noti": "デバイスインポートcsv",
"Maintenance_Tool_ImportCSV_noti_text": "CSVファイルを本当にインポートしますかこれによりデータベース内のデバイスが完全に<b>上書き</b>されます。",
"Maintenance_Tool_ImportCSV_text": "この機能を使用する前に、必ずバックアップを作成してください。ネットワークードとデバイス間の接続関係を含むデバイス一覧を記載したCSVカンマ区切り値ファイルをインポートします。そのためには、<b>devices.csv</b> という名前のCSVファイルを<b>/config</b>フォルダに配置してください。",
"Maintenance_Tool_ImportCSV_noti_text": "CSVファイルを本当にインポートしますかこれによりデータベース内のデバイスが完全に <b>上書き</b> されます。",
"Maintenance_Tool_ImportCSV_text": "この機能を使用する前に、必ずバックアップを作成してください。ネットワークードとデバイス間の接続関係を含むデバイス一覧を記載したCSVカンマ区切り値ファイルをインポートします。そのためには、<b>devices.csv</b> という名前のCSVファイルを <b>/config</b> フォルダに配置してください。",
"Maintenance_Tool_ImportConfig_noti": "設定のインポート (app.conf)",
"Maintenance_Tool_ImportPastedCSV": "デバイスのインポートcsv貼り付け",
"Maintenance_Tool_ImportPastedCSV_noti_text": "貼り付けたCSVを本当にインポートしますかこれによりデータベース内のデバイスが完全に<b>上書き</b>されます。",
"Maintenance_Tool_ImportPastedCSV_noti_text": "貼り付けたCSVを本当にインポートしますかこれによりデータベース内のデバイスが完全に <b>上書き</b> されます。",
"Maintenance_Tool_ImportPastedCSV_text": "この機能を使用する前に、必ずバックアップを作成してください。ネットワークードとデバイス間の接続関係を含むデバイス一覧が記載されたCSVカンマ区切り値ファイルをインポートします。",
"Maintenance_Tool_ImportPastedConfig": "設定のインポート(貼り付け)",
"Maintenance_Tool_ImportPastedConfig_noti_text": "貼り付けた設定を本当にインポートしますか?これにより<code>app.conf</code>ファイルが完全に<b>上書き</b>されます。",
"Maintenance_Tool_ImportPastedConfig_text": "アプリケーション設定をすべて含む<code>app.conf</code>ファイルをインポートします。まず<b>設定のエクスポート</b>で現在の<code>app.conf</code>ファイルをダウンロードすることをお勧めします。",
"Maintenance_Tool_ImportPastedConfig_noti_text": "貼り付けた設定を本当にインポートしますか?これにより <code>app.conf</code> ファイルが完全に <b>上書き</b> されます。",
"Maintenance_Tool_ImportPastedConfig_text": "アプリケーション設定をすべて含む <code>app.conf</code> ファイルをインポートします。まず <b>設定のエクスポート</b> で現在の <code>app.conf</code> ファイルをダウンロードすることをお勧めします。",
"Maintenance_Tool_UnlockFields": "デバイスフィールドのロック解除",
"Maintenance_Tool_UnlockFields_noti": "デバイスフィールドのロック解除",
"Maintenance_Tool_UnlockFields_noti_text": "全デバイスのデバイスフィールドのソース値LOCKED/USERをすべてクリアしてもよろしいですか この操作は元に戻せません。",
@@ -435,7 +438,7 @@
"Maintenance_Tool_arpscansw": "arpスキャンの切り替えオン/オフ)",
"Maintenance_Tool_arpscansw_noti": "arpスキャンをオンまたはオフにする",
"Maintenance_Tool_arpscansw_noti_text": "スキャンをオフにした場合、再度有効化されるまでオフのままとなります。",
"Maintenance_Tool_arpscansw_text": "ARPスキャンの有効化または無効化。スキャンを無効化した場合、再度有効化されるまで無効状態が維持されます。アクティブなスキャンはキャンセルされません。",
"Maintenance_Tool_arpscansw_text": "arpスキャンの有効化または無効化。スキャンを無効化した場合、再度有効化されるまで無効状態が維持されます。アクティブなスキャンはキャンセルされません。",
"Maintenance_Tool_backup": "DBバックアップ",
"Maintenance_Tool_backup_noti": "DBバックアップ",
"Maintenance_Tool_backup_noti_text": "データベースのバックアップを実行してもよろしいですか? 現在スキャンが実行されていないことを確認してください。",
@@ -475,7 +478,7 @@
"Maintenance_Tool_del_unknowndev_noti_text": "すべての(Unknown)のデバイスと(name not found)のデバイスを削除してもよろしいですか?",
"Maintenance_Tool_del_unknowndev_text": "この機能を使用する前に、必ずバックアップを作成してください。削除操作は元に戻せません。データベースから(Unknown)という名前のデバイスをすべて削除します。",
"Maintenance_Tool_del_unlockFields_selecteddev_text": "これにより、選択したデバイスの「LOCKED/USER」フィールドのロックが解除されます。この操作は取り消せません。",
"Maintenance_Tool_displayed_columns_text": "<a href=\"devices.php\"><b><i class=\"fa fa-laptop\"></i>デバイス</b></a>ページの列の表示状態と順序を変更します。",
"Maintenance_Tool_displayed_columns_text": "<a href=\"devices.php\"><b><i class=\"fa fa-laptop\"></i> デバイス</b></a> ページの列の表示状態と順序を変更します。",
"Maintenance_Tool_drag_me": "ドラッグして列を並べ替え。",
"Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text",
"Maintenance_Tool_purgebackup": "バックアップ除去",
@@ -500,7 +503,7 @@
"Maintenance_arp_status_off": "無効化中",
"Maintenance_arp_status_on": "スキャン中",
"Maintenance_built_on": "ビルド日",
"Maintenance_current_version": "最新です。<a href=\"https://github.com/netalertx/NetAlertX/issues/138\" target=\"_blank\">現在の取り組み</a>をご覧ください。",
"Maintenance_current_version": "最新です。<a href=\"https://github.com/netalertx/NetAlertX/issues/138\" target=\"_blank\">現在の取り組み</a> をご覧ください。",
"Maintenance_database_backup": "DBバックアップ",
"Maintenance_database_backup_found": "バックアップが見つかりました",
"Maintenance_database_backup_total": "総ディスク使用量",
@@ -512,13 +515,13 @@
"Maintenance_lang_selector_empty": "言語を選択",
"Maintenance_lang_selector_lable": "言語を選択",
"Maintenance_lang_selector_text": "変更はクライアント側で行われるため、現在のブラウザにのみ影響します。",
"Maintenance_new_version": "新しいバージョンが利用可能です。<a href=\"https://github.com/netalertx/NetAlertX/releases\" target=\"_blank\">リリースノート</a>を確認してください。",
"Maintenance_new_version": "新しいバージョンが利用可能です。<a href=\"https://github.com/netalertx/NetAlertX/releases\" target=\"_blank\">リリースノート</a> を確認してください。",
"Maintenance_themeselector_apply": "適用",
"Maintenance_themeselector_empty": "スキンを選択",
"Maintenance_themeselector_lable": "スキンを選択",
"Maintenance_themeselector_text": "変更はサーバー側で行われるため、使用中のすべてのデバイスに影響します。",
"Maintenance_version": "アプリのアップデート",
"NETWORK_DEVICE_TYPES_description": "ネットワークビューにおいてネットワーク機器として使用できるデバイス種別。デバイス種別は、デバイス詳細の特定のデバイスにおける<code>種別</code>設定と一致する必要があります。デバイスに追加するには<code>+</code>ボタンを使用してください。既存の種別を削除せず、新しい種別のみを追加してください。",
"NETWORK_DEVICE_TYPES_description": "ネットワークビューにおいてネットワーク機器として使用できるデバイス種別。デバイス種別は、デバイス詳細の特定のデバイスにおける <code>種別</code> 設定と一致する必要があります。デバイスに追加するには <code>+</code> ボタンを使用してください。既存の種別を削除せず、新しい種別のみを追加してください。",
"NETWORK_DEVICE_TYPES_name": "ネットワーク機器の種別",
"Navigation_About": "概要",
"Navigation_AppEvents": "アプリイベント",
@@ -536,7 +539,7 @@
"Navigation_Settings": "設定",
"Navigation_SystemInfo": "システム情報",
"Navigation_Workflows": "ワークフロー",
"Network_Assign": "上記<i class=\"fa fa-server\"></i>ネットワークノードに接続",
"Network_Assign": "上記 <i class=\"fa fa-server\"></i> ネットワークノードに接続",
"Network_Cant_Assign": "ルートインターネットノードを子リーフノードとして割り当てることはできません.",
"Network_Cant_Assign_No_Node_Selected": "割り当てられません、親ノードが選択されていません。",
"Network_Configuration_Error": "設定エラー",
@@ -546,7 +549,7 @@
"Network_ManageAdd_Name": "デバイス名",
"Network_ManageAdd_Name_text": "特殊文字を含まない名前",
"Network_ManageAdd_Port": "ポート数",
"Network_ManageAdd_Port_text": "Wi-FiおよびPLCの場合は空欄にしてください",
"Network_ManageAdd_Port_text": "wifiおよびplcの場合は空欄にしてください",
"Network_ManageAdd_Submit": "デバイス追加",
"Network_ManageAdd_Type": "デバイス種別",
"Network_ManageAdd_Type_text": "-- 種別選択 --",
@@ -562,19 +565,19 @@
"Network_ManageEdit_Name": "新規デバイス名",
"Network_ManageEdit_Name_text": "特殊文字を含まない名前",
"Network_ManageEdit_Port": " 新規ポート数",
"Network_ManageEdit_Port_text": "Wi-FiおよびPLCの場合は空欄にしてください",
"Network_ManageEdit_Port_text": "wifiおよびplcの場合は空欄にしてください",
"Network_ManageEdit_Submit": "変更を保存",
"Network_ManageEdit_Type": "新規デバイス種別",
"Network_ManageEdit_Type_text": "-- 種別選択 --",
"Network_ManageLeaf": "割り当ての管理",
"Network_ManageUnassign": "割り当て解除",
"Network_NoAssignedDevices": "このネットワークードには割り当てられたデバイスリーフードがありません。以下のデバイスから1つを割り当てるか、<a href=\"devices.php\"><b><i class=\"fa fa-laptop\"></i>デバイス</b></a>内の任意のデバイスの<b><i class=\"fa fa-info-circle\"></i>詳細</b>タブに移動し、そこでネットワーク<b><i class=\"fa fa-server\"></i>ードMAC</b><b><i class=\"fa fa-ethernet\"></i>ポート</b>に割り当ててください。",
"Network_NoAssignedDevices": "このネットワークードには割り当てられたデバイスリーフードがありません。以下のデバイスから1つを割り当てるか、<a href=\"devices.php\"><b><i class=\"fa fa-laptop\"></i> デバイス</b></a> 内の任意のデバイスの <b><i class=\"fa fa-info-circle\"></i> 詳細</b> タブに移動し、そこでネットワーク <b><i class=\"fa fa-server\"></i> ードMAC</b><b><i class=\"fa fa-ethernet\"></i> ポート</b> に割り当ててください。",
"Network_NoDevices": "設定するデバイスがありません",
"Network_Node": "ネットワークノード",
"Network_Node_Name": "ノード名",
"Network_Parent": "上位のネットワーク機器",
"Network_Root": "ルートノード",
"Network_Root_Not_Configured": "<a href=\"deviceDetails.php?mac=Internet\">インターネットルートデバイス</a><b>種別</b>フィールドで、<b>ゲートウェイ</b>などのネットワーク機器種別を選択し、この画面の設定を開始してください。<br/><br/>詳細なドキュメントは<a href=\"https://docs.netalertx.com/NETWORK_TREE\" target=\"_blank\">ネットワークの設定方法ページ</a>ガイドでご覧いただけます",
"Network_Root_Not_Configured": "<a href=\"deviceDetails.php?mac=Internet\">インターネットルートデバイス</a><b>種別</b> フィールドで、<b>ゲートウェイ</b> などのネットワーク機器種別を選択し、この画面の設定を開始してください。<br/><br/> 詳細なドキュメントは <a href=\"https://docs.netalertx.com/NETWORK_TREE\" target=\"_blank\">ネットワークの設定方法ページ</a> ガイドでご覧いただけます",
"Network_Root_Unconfigurable": "設定不可のルート",
"Network_ShowArchived": "アーカイブを表示",
"Network_ShowOffline": "オフラインを表示",
@@ -585,13 +588,13 @@
"Network_UnassignedDevices": "未割り当てデバイス",
"Notifications_All": "すべての通知",
"Notifications_Mark_All_Read": "すべて既読にする",
"PIALERT_WEB_PASSWORD_description": "デフォルトのパスワードは<code>123456</code>です。パスワードを変更するには、コンテナ内で<code>/app/back/pialert-cli</code>を実行するか、<a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code>パスワード設定プラグイン</a>を使用してください。",
"PIALERT_WEB_PASSWORD_description": "デフォルトのパスワードは <code>123456</code> です。パスワードを変更するには、コンテナ内で <code>/app/back/pialert-cli</code> を実行するか、<a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code> パスワード設定プラグイン</a> を使用してください。",
"PIALERT_WEB_PASSWORD_name": "ログインパスワード",
"PIALERT_WEB_PROTECTION_description": "有効にするとログインダイアログが表示されます。インスタンスにロックアウトされた場合は、以下をよくご確認ください。",
"PIALERT_WEB_PROTECTION_name": "ログインを有効化",
"PLUGINS_KEEP_HIST_description": "プラグイン履歴スキャン結果のエントリをいくつ保持すべきか(デバイス固有ではなく、プラグインごとに)。",
"PLUGINS_KEEP_HIST_name": "プラグイン履歴",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "SQLite WALWrite-Ahead Logの自動チェックポイント発生前の最大サイズMB単位。低い値1020 MBではディスク/ストレージ使用量を削減しますが、スキャン時のCPU使用率が増加します。高い値50100 MBは操作中のCPUスパイクを軽減しますが、RAMとディスク容量をより多く消費する可能性があります。デフォルトの<code>50 MB</code>は両者のバランスを取ります。SDカードを搭載したNASデバイスなどのリソース制約のあるシステムで有用です。設定保存後、変更を有効にするにはサーバーを再起動してください。",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "SQLite WALWrite-Ahead Logの自動チェックポイント発生前の最大サイズMB単位。低い値1020 MBではディスク/ストレージ使用量を削減しますが、スキャン時のCPU使用率が増加します。高い値50100 MBは操作中のCPUスパイクを軽減しますが、RAMとディスク容量をより多く消費する可能性があります。デフォルトの <code>50 MB</code> は両者のバランスを取ります。SDカードを搭載したNASデバイスなどのリソース制約のあるシステムで有用です。設定保存後、変更を有効にするにはサーバーを再起動してください。",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "WALサイズ制限(MB)",
"Plugins_DeleteAll": "すべて削除(フィルターは無視されます)",
"Plugins_Filters_Mac": "Macフィルター",
@@ -628,12 +631,12 @@
"REPORT_DASHBOARD_URL_description": "このURLは、HTMLレポートメール内のリンク生成のベースとして使用されます。ポート番号を含め、<code>http://</code> で始まる完全なURLを入力してください末尾のスラッシュ <code>/</code> は不要です)。",
"REPORT_DASHBOARD_URL_name": "NetAlertX URL",
"REPORT_ERROR": "お探しのページは一時的に利用できません、数秒後に再度お試しください",
"REPORT_MAIL_description": "有効化すると、購読した変更点のリストが記載されたメールが送信されます。以下のSMTP設定に関連する残りの設定もすべて入力してください。問題が発生した場合は、<code>LOG_LEVEL</code><code>debug</code>に設定し、<a href=\"/maintenance.php#tab_Logging\">エラーログ</a>を確認してください。",
"REPORT_MAIL_description": "有効化すると、購読した変更点のリストが記載されたメールが送信されます。以下のSMTP設定に関連する残りの設定もすべて入力してください。問題が発生した場合は、<code>LOG_LEVEL</code><code>debug</code> に設定し、<a href=\"/maintenance.php#tab_Logging\">エラーログ</a> を確認してください。",
"REPORT_MAIL_name": "メールを有効化",
"REPORT_TITLE": "レポート",
"RandomMAC_hover": "このデバイスはランダムなMACアドレスを使用しています",
"Reports_Sent_Log": "送信レポートログ",
"SCAN_SUBNETS_description": "ほとんどのネットワーク内スキャナーARP-SCAN、NMAP、NSLOOKUP、DIGは、特定のネットワークインターフェースとサブネットをスキャンすることに依存しています。この設定に関するヘルプについては、<a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">サブネットのドキュメント</a>を確認してください。特にVLAN、サポートされているVLANの種類、ネットワークマスクとインターフェースの確認方法についてです。<br/><br/>ネットワーク内スキャナーの代替手段として、NetAlert<sup>X</sup>がネットワークにアクセスする必要のない他のデバイススキャナー/インポーターUNIFI、dhcp.leases、PiHoleなどを有効化できます。<br/><br/>注スキャン時間自体は確認するIPアドレス数に依存するため、適切なネットワークマスクとインターフェースで慎重に設定してください。",
"SCAN_SUBNETS_description": "ほとんどのネットワーク内スキャナーARP-SCAN、NMAP、NSLOOKUP、DIGは、特定のネットワークインターフェースとサブネットをスキャンすることに依存しています。この設定に関するヘルプについては、<a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">サブネットのドキュメント</a> を確認してください。特にVLAN、サポートされているVLANの種類、ネットワークマスクとインターフェースの確認方法についてです。<br/><br/> ネットワーク内スキャナーの代替手段として、NetAlert<sup>X</sup> がネットワークにアクセスする必要のない他のデバイススキャナー/インポーターUNIFI、dhcp.leases、PiHoleなどを有効化できます。<br/><br/> スキャン時間自体は確認するIPアドレス数に依存するため、適切なネットワークマスクとインターフェースで慎重に設定してください。",
"SCAN_SUBNETS_name": "スキャン対象ネットワーク",
"SYSTEM_TITLE": "システム情報",
"Setting_Override": "上書き値",
@@ -641,7 +644,7 @@
"Settings_Metadata_Toggle": "指定された設定のメタデータを表示/非表示にする。",
"Settings_Show_Description": "説明を表示",
"Settings_device_Scanners_desync": "⚠デバイススキャナーのスケジュールが同期されていません。",
"Settings_device_Scanners_desync_popup": "デバイススキャナーのスケジュール(<code>*_RUN_SCHD</code>)は同一ではありません。これにより、デバイスのオンライン/オフライン通知に一貫性が生じます。意図的な場合を除き、有効化されているすべての<b>🔍デバイススキャナー</b>で同一のスケジュールを使用してください。",
"Settings_device_Scanners_desync_popup": "デバイススキャナーのスケジュール(<code>*_RUN_SCHD</code>)は同一ではありません。これにより、デバイスのオンライン/オフライン通知に一貫性が生じます。意図的な場合を除き、有効化されているすべての <b>🔍デバイススキャナー</b> で同一のスケジュールを使用してください。",
"Speedtest_Results": "スピードテスト結果",
"Systeminfo_AvailableIps": "利用可能なIP",
"Systeminfo_CPU": "CPU",
@@ -718,22 +721,22 @@
"Systeminfo_System_Uptime": "稼働時間:",
"Systeminfo_This_Client": "使用中のクライアント",
"Systeminfo_USB_Devices": "USBデバイス",
"TICKER_MIGRATE_TO_NETALERTX": "⚠古いマウント位置が検出されました。新しい<code>/data/config</code>および<code>/data/db</code>フォルダと<code>netalertx</code>コンテナへの移行については、<a href=\"https://docs.netalertx.com/MIGRATION\" target=\"_blank\">このガイド</a>に従ってください。",
"TIMEZONE_description": "統計情報を正しく表示するためのタイムゾーン。タイムゾーンは<a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\" rel=\"nofollow\">こちら</a>で確認してください。",
"TICKER_MIGRATE_TO_NETALERTX": "⚠古いマウント位置が検出されました。新しい <code>/data/config</code> および <code>/data/db</code> フォルダと <code>netalertx</code> コンテナへの移行については、<a href=\"https://docs.netalertx.com/MIGRATION\" target=\"_blank\">このガイド</a> に従ってください。",
"TIMEZONE_description": "統計情報を正しく表示するためのタイムゾーン。タイムゾーンは <a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\" rel=\"nofollow\">こちら</a> で確認してください。",
"TIMEZONE_name": "タイムゾーン",
"UI_DEV_SECTIONS_description": "デバイスページで非表示にするUI要素を選択してください。",
"UI_DEV_SECTIONS_name": "デバイスセクションを非表示",
"UI_ICONS_description": "事前定義済みアイコンの一覧。注意して操作してください。アイコン追加の推奨方法は、<a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">アイコンのドキュメント</a>に記載されています。base64エンコードされたSVG HTMLまたはFont Awesome HTMLタグを追加できます。",
"UI_ICONS_description": "事前定義済みアイコンの一覧。注意して操作してください。アイコン追加の推奨方法は、<a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">アイコンのドキュメント</a> に記載されています。base64エンコードされたSVG HTMLまたはFont Awesome HTMLタグを追加できます。",
"UI_ICONS_name": "事前定義済みアイコン",
"UI_LANG_description": "お好みのUI言語を選択してください。翻訳のお手伝いや言語の提案は、<a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a>のオンラインポータルで行えます。",
"UI_LANG_description": "お好みのUI言語を選択してください。翻訳のお手伝いや言語の提案は、<a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a> のオンラインポータルで行えます。",
"UI_LANG_name": "UI言語",
"UI_MY_DEVICES_description": "デフォルトの<b>マイデバイス</b>ビューに表示すべきデバイスの状態。",
"UI_MY_DEVICES_description": "デフォルトの <b>マイデバイス</b> ビューに表示すべきデバイスの状態。",
"UI_MY_DEVICES_name": "自分のデバイスビューに表示",
"UI_NOT_RANDOM_MAC_description": "ランダムデバイスとしてマークすべきでないMACプレフィックス。例えば<code>52</code>と入力すると、<code>52:xx:xx:xx:xx:xx</code>で始まるデバイスがランダムMACアドレスを持つデバイスとしてマークされるのを除外します。",
"UI_NOT_RANDOM_MAC_description": "ランダムデバイスとしてマークすべきでないMACプレフィックス。例えば <code>52</code> と入力すると、<code>52:xx:xx:xx:xx:xx</code> で始まるデバイスがランダムMACアドレスを持つデバイスとしてマークされるのを除外します。",
"UI_NOT_RANDOM_MAC_name": "ランダムとしてマークしない",
"UI_PRESENCE_description": "<a href=\"/devices.php\" target=\"_blank\">デバイス</a>ページ内の<b>デバイス状態</b>チャートに表示するステータスを選択してください。",
"UI_PRESENCE_description": "<a href=\"/devices.php\" target=\"_blank\">デバイス</a> ページ内の <b>デバイス状態</b> チャートに表示するステータスを選択してください。",
"UI_PRESENCE_name": "検出チャートの表示",
"UI_REFRESH_description": "UIが再読み込みされるまでの秒数を指定します。無効にするには<code>0</code>を設定してください。",
"UI_REFRESH_description": "UIが再読み込みされるまでの秒数を指定します。無効にするには <code>0</code> を設定してください。",
"UI_REFRESH_name": "UI自動更新",
"VERSION_description": "バージョンまたはタイムスタンプヘルパー値で、アプリがアップグレードされたかどうかを確認します。",
"VERSION_name": "バージョンまたはタイムスタンプ",
@@ -767,13 +770,13 @@
"add_option_event_tooltip": "値の追加",
"copy_icons_event_tooltip": "同じ種別の全デバイスにアイコンを上書き",
"devices_old": "リフレッシュ中…",
"general_event_description": "トリガーされたイベントは、バックグラウンド処理が完了するまで時間がかかる場合があります。以下の実行キューが空になると処理は終了します(問題が発生した場合は<a href='/maintenance.php#tab_Logging'>エラーログ</a>を確認してください)。<br/> <br/> 実行キュー:",
"general_event_description": "トリガーされたイベントは、バックグラウンド処理が完了するまで時間がかかる場合があります。以下の実行キューが空になると処理は終了します(問題が発生した場合は <a href='/maintenance.php#tab_Logging'>エラーログ</a> を確認してください)。<br/> <br/> 実行キュー:",
"general_event_title": "アドホックイベントの実行",
"go_to_device_event_tooltip": "デバイスに移動",
"go_to_node_event_tooltip": "指定されたノードのネットワークページに移動する",
"new_version_available": "新しいバージョンが利用可能です。",
"report_guid": "通知GUID:",
"report_guid_missing": "リンクされた通知が見つかりません。送信された通知が利用可能になるまで、わずかな遅延が生じます。数秒後にページとキャッシュを更新してください。また、<code>DBCLNP_NOTIFI_HIST</code>設定で指定されているメンテナンス中に、選択した通知が削除された可能性もあります。<br/> <br/>代わりに最新の通知が表示されます。欠落している通知のGUIDは以下の通りです:",
"report_guid": "通知guid:",
"report_guid_missing": "リンクされた通知が見つかりません。送信された通知が利用可能になるまで、わずかな遅延が生じます。数秒後にページとキャッシュを更新してください。また、<code>DBCLNP_NOTIFI_HIST</code> 設定で指定されているメンテナンス中に、選択した通知が削除された可能性もあります。<br/> <br/>代わりに最新の通知が表示されます。欠落している通知のGUIDは以下の通りです:",
"report_select_format": "フォーマット選択:",
"report_time": "通知時刻:",
"run_event_tooltip": "設定を有効にし、実行する前にまず変更を保存してください。",
@@ -782,7 +785,7 @@
"settings_core_label": "Core",
"settings_device_scanners": "デバイススキャナーは、CurrentScanデータベーステーブルに書き込みを行うデバイスを発見するために使用されます。",
"settings_device_scanners_icon": "fa-solid fa-magnifying-glass-plus",
"settings_device_scanners_info": "<a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>設定でより多くのデバイススキャナーを読み込みます",
"settings_device_scanners_info": "<a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a> 設定でより多くのデバイススキャナーを読み込みます",
"settings_device_scanners_label": "デバイススキャナー",
"settings_enabled": "有効な設定",
"settings_enabled_icon": "fa-solid fa-toggle-on",
@@ -797,10 +800,10 @@
"settings_other_scanners_label": "その他のスキャナー",
"settings_publishers": "有効化された通知ゲートウェイ - 設定に応じて通知を送信する発行元。",
"settings_publishers_icon": "fa-solid fa-paper-plane",
"settings_publishers_info": "<a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>設定でさらに多くのパブリッシャーを読み込みます",
"settings_publishers_info": "<a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a> 設定でさらに多くのパブリッシャーを読み込みます",
"settings_publishers_label": "パブリッシャー",
"settings_readonly": "<code>app.conf</code>の読み取りまたは書き込みができません。コンテナを再起動し、<a href=\"https://docs.netalertx.com/FILE_PERMISSIONS\" target=\"_blank\">ファイルの権限に関するドキュメント</a>を参照してください",
"settings_saved": "<br/>設定が保存されました。<br/>再読込中…<br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i><br/>",
"settings_readonly": "<code>app.conf</code> の読み取りまたは書き込みができません。コンテナを再起動し、<a href=\"https://docs.netalertx.com/FILE_PERMISSIONS\" 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": "fa-solid fa-gear",
"settings_system_label": "システム",
"settings_update_item_warning": "以下の値を更新してください。以前のフォーマットに従うよう注意してください。<b>検証は行われません。</b>",

View File

@@ -24,7 +24,7 @@ $pia_lang_selected = isset($_langMatch[1]) ? strtolower($_langMatch[1]) : $defau
$result = $db->query("SELECT * FROM Plugins_Language_Strings");
$strings = array();
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$strings[$row['String_Key']] = $row['String_Value'];
$strings[$row['stringKey']] = $row['stringValue'];
}

View File

@@ -1,15 +1,17 @@
{
"default": "en_us",
"languages": [
{ "code": "en_us", "display": "English (en_us)" },
{ "code": "ar_ar", "display": "Arabic (ar_ar)" },
{ "code": "ca_ca", "display": "Catalan (ca_ca)" },
{ "code": "cs_cz", "display": "Czech (cs_cz)" },
{ "code": "de_de", "display": "German (de_de)" },
{ "code": "en_us", "display": "English (en_us)" },
{ "code": "es_es", "display": "Spanish (es_es)" },
{ "code": "fa_fa", "display": "Farsi (fa_fa)" },
{ "code": "id_id", "display": "Indonesian (id_id)" },
{ "code": "fr_fr", "display": "French (fr_fr)" },
{ "code": "fi_fi", "display": "Finnish (fi_fi)" },
{ "code": "he_il", "display": "Hebrew (he_il)" },
{ "code": "it_it", "display": "Italian (it_it)" },
{ "code": "ja_jp", "display": "Japanese (ja_jp)" },
{ "code": "nb_no", "display": "Norwegian (nb_no)" },

View File

@@ -43,6 +43,9 @@ def load_language_codes(languages_json_path):
return codes
# Languages
# Look-up here: http://www.lingoes.net/en/translator/langcode.htm
if __name__ == "__main__":
current_path = os.path.dirname(os.path.abspath(__file__))
# language codes are loaded from languages.json — add a new language there

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "",
"DAYS_TO_KEEP_EVENTS_description": "Dette er en vedlikeholdsinnstilling. Dette spesifiserer antall dager verdt med hendelsesoppføringer som vil beholdes. Alle eldre hendelser vil bli slettet med jevne mellomrom. Gjelder også for plugin-hendelseshistorikk.",
"DAYS_TO_KEEP_EVENTS_name": "Slett hendelser eldre enn",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "FEIL - DB kan være låst - Sjekk F12 Dev tools -> Konsoll eller prøv senere.",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "Frakoblet",
"Gen_Okay": "Ok",
"Gen_Online": "",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "Nie można usunąć wymagana jest przynajmniej jedna właściwość.",
"DAYS_TO_KEEP_EVENTS_description": "To jest ustawienie konserwacyjne. Określa liczbę dni, przez które będą przechowywane wpisy zdarzeń. Wszystkie starsze zdarzenia będą okresowo usuwane. Dotyczy również Historii Zdarzeń Wtyczek.",
"DAYS_TO_KEEP_EVENTS_name": "Usuń zdarzenia starsze niż",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "Wyłącz tę opcję, aby przyspieszyć inicjalizację i zapisywanie ustawień. Po wyłączeniu wtyczki nie są wykrywane i nie można dodawać nowych wtyczek do ustawienia <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Wykryj wtyczki",
"DevDetail_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "Błąd - Baza danych może być zablokowana - Sprawdź narzędzia deweloperskie F12 -> Konsola lub spróbuj później.",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "Niedostępne",
"Gen_Okay": "Ok",
"Gen_Online": "Dostępne",

View File

@@ -66,6 +66,8 @@
"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",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"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_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "ERRO - O banco de dados pode estar bloqueado - Verifique F12 Ferramentas de desenvolvimento -> Console ou tente mais tarde.",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",

View File

@@ -27,8 +27,8 @@
"AppEvents_ObjectType": "Tipo de Objeto",
"AppEvents_Plugin": "Plugin",
"AppEvents_Type": "Tipo",
"BACKEND_API_URL_description": "",
"BACKEND_API_URL_name": "",
"BACKEND_API_URL_description": "Usado para permitir que o frontend comunique com o backend. Por padrão isto é definido para <code>/server</code> e geralmente não deve ser mudado.",
"BACKEND_API_URL_name": "URL do API do backend",
"BackDevDetail_Actions_Ask_Run": "Deseja executar esta ação?",
"BackDevDetail_Actions_Not_Registered": "Ação não registada: ",
"BackDevDetail_Actions_Title_Run": "Executar ação",
@@ -37,7 +37,7 @@
"BackDevDetail_Tools_WOL_error": "O comando NÃO foi executado.",
"BackDevDetail_Tools_WOL_okay": "O comando foi executado.",
"BackDevices_Arpscan_disabled": "Análise Arp Desativada",
"BackDevices_Arpscan_enabled": "Análise ARP Ativada",
"BackDevices_Arpscan_enabled": "Análise Arp Ativada",
"BackDevices_Backup_CopError": "A base da dados original não pode ser gravada.",
"BackDevices_Backup_Failed": "A copia de segurança foi parcialmente executada. O arquivo não pode ser criado ou está vazio.",
"BackDevices_Backup_okay": "A copia de segurança foi feita executado corretamente com o novo arquivo",
@@ -61,12 +61,14 @@
"BackDevices_Restore_okay": "Restauração executada com sucesso.",
"BackDevices_darkmode_disabled": "Modo Noturno Desativado",
"BackDevices_darkmode_enabled": "Modo Noturno Ativado",
"CLEAR_NEW_FLAG_description": "Se ativado (<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_description": "Se ativado (<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": "Limpar a flag nova",
"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 apagados periodicamente. Também se aplica ao Histórico de eventos do plug-in.",
"DAYS_TO_KEEP_EVENTS_name": "Apagar eventos mais antigos que",
"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>.",
"DEEP_SLEEP_description": "Diminui a utilização do CPU ao prolongar tempos de espera ociosos entre ciclos de processamento. Quando ativo, análises podem ser atrasadas por até 1 minuto e o UI pode ficar menos responsivo.",
"DEEP_SLEEP_name": "Sleep profundo",
"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_Children_Title": "Relacionamentos de crianças",
"DevDetail_Copy_Device_Title": "Copiar pormenores do dispositivo",
@@ -96,12 +98,12 @@
"DevDetail_MainInfo_Location": "Localização",
"DevDetail_MainInfo_Name": "Nome",
"DevDetail_MainInfo_Network": "<i class=\"fa fa-server\"> </i> Node (MAC)",
"DevDetail_MainInfo_Network_Port": "<i class=\"fa fa-ethernet\"></i>Porta",
"DevDetail_MainInfo_Network_Port": "<i class=\"fa fa-ethernet\"></i> Porta",
"DevDetail_MainInfo_Network_Site": "Site",
"DevDetail_MainInfo_Network_Title": "Rede",
"DevDetail_MainInfo_Network_Title": "Detalhes de Rede",
"DevDetail_MainInfo_Owner": "Proprietário",
"DevDetail_MainInfo_SSID": "SSID",
"DevDetail_MainInfo_Title": "Informações principais",
"DevDetail_MainInfo_Title": "Informação de Dispositivo",
"DevDetail_MainInfo_Type": "Tipo",
"DevDetail_MainInfo_Vendor": "Fornecedor",
"DevDetail_MainInfo_mac": "MAC",
@@ -139,7 +141,7 @@
"DevDetail_SessionTable_Duration": "Duração",
"DevDetail_SessionTable_IP": "IP",
"DevDetail_SessionTable_Order": "Ordem",
"DevDetail_Shortcut_CurrentStatus": "Estado atual",
"DevDetail_Shortcut_CurrentStatus": "Estado",
"DevDetail_Shortcut_DownAlerts": "Alertas para baixo",
"DevDetail_Shortcut_Presence": "Presença",
"DevDetail_Shortcut_Sessions": "Sessões",
@@ -198,22 +200,22 @@
"DevDetail_button_Save": "Gravar",
"DeviceEdit_ValidMacIp": "Insira um endereço <b>Mac</b> e <b>IP</b> válidos.",
"Device_MultiEdit": "Edição múltipla",
"Device_MultiEdit_Backup": "",
"Device_MultiEdit_Backup": "Cuidado, introduzir valores errados abaixo pode quebrar a sua configuração. Por favor configure a sua base de dados ou configurações de Dispositivos primeiro (<a href=\"#\" onclick=\"ExportCSV()\">clique para transferir <i class=\"fa-solid fa-download fa-bounce\"></i></a>). Leia como recuperar Dispositivos a partir deste ficheiro na <a href=\"https://docs.netalertx.com/BACKUPS#scenario-2-corrupted-database\" target=\"_blank\">Documentação de cópias de segurança</a>. De maneira a aplicar as suas mudanças clique no ícone <b>Guardar<i class=\"fa-solid fa-save\"></i></b> em cada campo que deseja atualizar.",
"Device_MultiEdit_Fields": "Editar campos:",
"Device_MultiEdit_MassActions": "Ações em massa:",
"Device_MultiEdit_No_Devices": "Nenhum dispositivo selecionado.",
"Device_MultiEdit_Tooltip": "Cuidadoso. Clicar aqui aplicará o valor à esquerda a todos os dispositivos selecionados acima.",
"Device_NextScan_Imminent": "",
"Device_NextScan_In": "",
"Device_NoData_Help": "",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
"Device_Save_Failed": "",
"Device_Save_Unauthorized": "",
"Device_Saved_Success": "",
"Device_Saved_Unexpected": "",
"Device_Scanning": "",
"Device_NextScan_Imminent": "Iminente...",
"Device_NextScan_In": "Próxima análise em aproximadamente ",
"Device_NoData_Help": "Se dispositivos não aparecem após a análise, verifique a sua definição SCAN_SUBNETS e a <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">documentação</a>.",
"Device_NoData_Scanning": "Espere primeiro pela análise - isto pode levar vários minutos após a primeira configuração inicial.",
"Device_NoData_Title": "Nenhum dispositivo encontrado ainda",
"Device_NoMatch_Title": "Nenhum dispositivo corresponde ao filtro atual",
"Device_Save_Failed": "Falha ao guardar dispositivo",
"Device_Save_Unauthorized": "Não autorizado - token de API inválido",
"Device_Saved_Success": "Dispositivo guardado com sucesso",
"Device_Saved_Unexpected": "Atualização de dispositivo devolveu uma resposta inesperada",
"Device_Scanning": "Analisando...",
"Device_Searchbox": "Procurar",
"Device_Shortcut_AllDevices": "Os meus dispositivos",
"Device_Shortcut_AllNodes": "Todos os Nodes",
@@ -225,18 +227,18 @@
"Device_Shortcut_Favorites": "Favoritos",
"Device_Shortcut_NewDevices": "Novo dispostivo",
"Device_Shortcut_OnlineChart": "Presença do dispositivo",
"Device_Shortcut_Unstable": "",
"Device_Shortcut_Unstable": "Instável",
"Device_TableHead_AlertDown": "Alerta em baixo",
"Device_TableHead_Connected_Devices": "Conexões",
"Device_TableHead_CustomProps": "Propriedades / Ações",
"Device_TableHead_FQDN": "FQDN",
"Device_TableHead_Favorite": "Favorito",
"Device_TableHead_FirstSession": "Primeira sessão",
"Device_TableHead_Flapping": "",
"Device_TableHead_Flapping": "Flapping",
"Device_TableHead_GUID": "GUID",
"Device_TableHead_Group": "Grupo",
"Device_TableHead_IPv4": "",
"Device_TableHead_IPv6": "",
"Device_TableHead_IPv4": "IPv4",
"Device_TableHead_IPv6": "IPv6",
"Device_TableHead_Icon": "Ícone",
"Device_TableHead_LastIP": "Último IP",
"Device_TableHead_LastIPOrder": "Último pedido de IP",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "Nome",
"Device_TableHead_NetworkSite": "Site da rede",
"Device_TableHead_Owner": "Proprietário",
"Device_TableHead_ParentRelType": "Tipo de relação",
"Device_TableHead_Parent_MAC": "Node de rede anterior",
"Device_TableHead_ParentRelType": "Relação",
"Device_TableHead_Parent_MAC": "Nó parente",
"Device_TableHead_Port": "Porta",
"Device_TableHead_PresentLastScan": "Presença",
"Device_TableHead_ReqNicsOnline": "Exigir NICs online",
@@ -260,7 +262,7 @@
"Device_TableHead_SyncHubNodeName": "Nó de sincronização",
"Device_TableHead_Type": "Tipo",
"Device_TableHead_Vendor": "Fornecedor",
"Device_TableHead_Vlan": "",
"Device_TableHead_Vlan": "VLAN",
"Device_Table_Not_Network_Device": "Não configurado como um dispositivo de rede",
"Device_Table_info": "A mostrar _START_ to _END_ of _TOTAL_ entradas",
"Device_Table_nav_next": "Próximo",
@@ -308,14 +310,14 @@
"Events_Tablelenght": "Mostrar entradas do _MENU_",
"Events_Tablelenght_all": "Todos",
"Events_Title": "Eventos",
"FakeMAC_hover": "",
"FieldLock_Error": "",
"FieldLock_Lock_Tooltip": "",
"FieldLock_Locked": "",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_Source_Label": "",
"FieldLock_Unlock_Tooltip": "",
"FieldLock_Unlocked": "",
"FakeMAC_hover": "Este dispositivo tem um endereço MAC falso/alterado",
"FieldLock_Error": "Erro ao atualizar o estado de bloqueio do campo",
"FieldLock_Lock_Tooltip": "Bloquear campo (evita sobrescrita de plugins)",
"FieldLock_Locked": "Campo bloqueado",
"FieldLock_SaveBeforeLocking": "Guarde as suas mudanças antes de bloquear",
"FieldLock_Source_Label": "Fonte: ",
"FieldLock_Unlock_Tooltip": "Desbloquear campo (permite sobrescritas de plugins)",
"FieldLock_Unlocked": "Campo desbloqueado",
"GRAPHQL_PORT_description": "O número da porta do servidor GraphQL. Certifique-se de que a porta seja exclusiva em todas as suas aplicações neste host e nas instâncias do NetAlertX.",
"GRAPHQL_PORT_name": "Porta GraphQL",
"Gen_Action": "Ação",
@@ -323,7 +325,7 @@
"Gen_AddDevice": "Adicionar dispositivo",
"Gen_Add_All": "Adicionar todos",
"Gen_All_Devices": "Todos os dispostivos",
"Gen_Archived": "",
"Gen_Archived": "Arquivado",
"Gen_AreYouSure": "Tem certeza?",
"Gen_Backup": "Executar backup",
"Gen_Cancel": "Cancelar",
@@ -334,20 +336,21 @@
"Gen_Delete": "Apagar",
"Gen_DeleteAll": "Apagar todos",
"Gen_Description": "Descrição",
"Gen_Down": "",
"Gen_Down": "Em Baixo",
"Gen_Error": "Erro",
"Gen_Filter": "Filtro",
"Gen_Flapping": "",
"Gen_Flapping": "Flapping",
"Gen_Generate": "Gerar",
"Gen_InvalidMac": "Endereço MAC Inválido.",
"Gen_Invalid_Value": "",
"Gen_InvalidMac": "Endereço Mac inválido.",
"Gen_Invalid_Value": "Um valor inválido foi inserido",
"Gen_LockedDB": "ERRO - A base de dados pode estar bloqueada - Verifique F12 Ferramentas de desenvolvimento -> Console ou tente mais tarde.",
"Gen_NetworkMask": "Máscara de Rede",
"Gen_New": "",
"Gen_New": "Novo",
"Gen_No_Data": "Sem dados",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
"Gen_Purge": "Purge",
"Gen_Purge": "Purgar",
"Gen_ReadDocs": "Leia mais em documentos.",
"Gen_Remove_All": "Remover tudo",
"Gen_Remove_Last": "Remover o último",
@@ -361,7 +364,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Selecionar para pré-visualizar",
"Gen_Selected_Devices": "Seleciona dispostivos:",
"Gen_Sleeping": "",
"Gen_Sleeping": "A Dormir",
"Gen_Subnet": "Sub-rede",
"Gen_Switch": "Trocar",
"Gen_Upd": "Atualizado com sucesso",
@@ -375,9 +378,9 @@
"Gen_create_new_device_info": "Os dispositivos são normalmente descobertos usando <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">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://docs.netalertx.com/REMOTE_NETWORKS\">documentação de Redes Remotas</a>.",
"General_display_name": "Geral",
"General_icon": "<i class=\"fa fa-gears\"></i>",
"HRS_TO_KEEP_NEWDEV_description": "",
"HRS_TO_KEEP_NEWDEV_description": "Isto é uma definição de manutenção <b>ELIMINAR dispositivos</b>. Se ativado (<code>0</code> é desativado), dispositivos marcados como <b>Novo dispositivo</b> serão eliminados se o seu tempo de <b>Primeira Sessão</b> foi mais antigo que as horas especificadas nesta definição. Use esta definição se quer auto-eliminar <b>Novos dispositivos</b> após <code>X</code> horas.",
"HRS_TO_KEEP_NEWDEV_name": "Remover novos dispostivos depois",
"HRS_TO_KEEP_OFFDEV_description": "",
"HRS_TO_KEEP_OFFDEV_description": "Isto é uma definição de manutenção <b>ELIMINAR dispositivos</b>. Se ativado (<code>0</code> é desativado), dispositivos que estão <b>Offline</b> e a sua data de <b>Última conexão</b> foi mais antigo que as horas especificadas nesta definição, será eliminado. Use esta definição se quer auto-eliminar <b>Dispositivos Offline</b> após <code>X</code> horas de estarem offline.",
"HRS_TO_KEEP_OFFDEV_name": "Apagar dispositivos offline após",
"LOADED_PLUGINS_description": "Quais plugins carregar. Adicionar plugins pode deixar a aplicação lenta. Leia mais sobre quais plugins precisam ser ativados, tipos ou opções de escaneamento na <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">documentação de plugins</a>. Plugins descarregados perderão as suas configurações. Somente plugins <code>desativados</code> podem ser descarregados.",
"LOADED_PLUGINS_name": "Plugins carregados",
@@ -400,7 +403,7 @@
"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? Isto pode causar inconsistência na app. Faça primeiro um backup da sua configuração. <br/> <br/> Nota: Isto pode levar alguns minutos.",
"Maint_Restart_Server_noti_text": "Tem a certeza que quer reiniciar o servidor backend? Isto pode causar inconsistências na aplicação. Crie uma cópia de segurança primeiro. <br/><br/> Nota: isto pode demorar alguns minutos.",
"Maintenance_InitCheck": "Verificação inicial",
"Maintenance_InitCheck_Checking": "A verificar…",
"Maintenance_InitCheck_QuickSetupGuide": "Certifique-se de que seguiu o <a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">guia de configuração rápida</a>.",
@@ -416,7 +419,7 @@
"Maintenance_Tool_ExportCSV": "Exportar dispostivos (csv)",
"Maintenance_Tool_ExportCSV_noti": "Exportar dispostivos (csv)",
"Maintenance_Tool_ExportCSV_noti_text": "Tem a certeza de que pretende gerar um ficheiro CSV?",
"Maintenance_Tool_ExportCSV_text": "Gere um ficheiro 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. Também pode acionar isto a aceder esta URL <code>your_NetAlertX_url/php/server/devices.php?action=ExportCSV</code> ou ativando o plugin <a href=\"settings.php#CSVBCKP_header\">CSV Backup</a>.",
"Maintenance_Tool_ExportCSV_text": "Gere um ficheiro 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. Também pode acionar isto ativando 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 ficheiro CSV? Isto <b>sobrescreverá</b> completamente os dispositivos na sua base de dados.",
@@ -428,10 +431,10 @@
"Maintenance_Tool_ImportPastedConfig": "Configurações Importar (colar)",
"Maintenance_Tool_ImportPastedConfig_noti_text": "Tem certeza de que deseja importar as configurações coladas? Isto irá <b>sobrescrever</b> completamente o ficheiro <code>app.conf</code>.",
"Maintenance_Tool_ImportPastedConfig_text": "Importa o ficheiro <code>app.conf</code> contendo todas as configurações da aplicação. Pode descarregar primeiro o ficheiro <code>app.conf</code> com a <b>Exportação de configurações</b>.",
"Maintenance_Tool_UnlockFields": "",
"Maintenance_Tool_UnlockFields_noti": "",
"Maintenance_Tool_UnlockFields_noti_text": "",
"Maintenance_Tool_UnlockFields_text": "",
"Maintenance_Tool_UnlockFields": "Desbloquear Campos do Dispositivo",
"Maintenance_Tool_UnlockFields_noti": "Desbloquear Campos do Dispositivo",
"Maintenance_Tool_UnlockFields_noti_text": "Tem a certeza que quer limpar todos os valores fonte (LOCKED/USER) para todos os campos de dispositivo em todos os dispositivos? Esta ação não pode ser desfeita.",
"Maintenance_Tool_UnlockFields_text": "Esta ferramenta removerá todos os valores fonte de todos os campos rastreados para todos os dispositivos, efetivamente desbloqueando todos os campos para plugins e utilizadores. Use isto com caução, uma vez que afetará todo o inventário do seu dispositivo.",
"Maintenance_Tool_arpscansw": "Alternar arp-Scan (ligado/desligado)",
"Maintenance_Tool_arpscansw_noti": "Ativar ou desativar o arp-Scan",
"Maintenance_Tool_arpscansw_noti_text": "Quando a análise é desligada, permanece desligada até ser novamente ativada.",
@@ -441,9 +444,9 @@
"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 da base de dados estão localizadas no diretório da base de dados como um arquivo zip, 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_clearSourceFields_selected": "",
"Maintenance_Tool_clearSourceFields_selected_noti": "",
"Maintenance_Tool_clearSourceFields_selected_text": "",
"Maintenance_Tool_clearSourceFields_selected": "Limpar campos fonte",
"Maintenance_Tool_clearSourceFields_selected_noti": "Limpar fontes",
"Maintenance_Tool_clearSourceFields_selected_text": "Isto limpará todos os campos fonte para os dispositivos selecionados. Esta ação não pode ser desfeita.",
"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.",
@@ -474,7 +477,7 @@
"Maintenance_Tool_del_unknowndev_noti": "Eliminar dispositivos desconhecidos",
"Maintenance_Tool_del_unknowndev_noti_text": "Tem certeza que deseja apagar todos (desconhecidos) e (nome não encontrados) dispositivos?",
"Maintenance_Tool_del_unknowndev_text": "Antes de usar esta função, faça um backup. Apagar não pode ser desfeito. Todos os dispositivos nomeados (não conhecidos) serão apagados da base de dados.",
"Maintenance_Tool_del_unlockFields_selecteddev_text": "",
"Maintenance_Tool_del_unlockFields_selecteddev_text": "Isto desbloqueará os campos LOCKED/USER para os dispositivos selecionados. Esta ação não pode ser desfeita.",
"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-portátil\"></i> Dispositivos</b></a>.",
"Maintenance_Tool_drag_me": "Arraste-me para reordenar colunas.",
"Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text",
@@ -486,13 +489,13 @@
"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 funciona 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 na base de dados para segurança, caso o db estivesse atualmente em acesso de gravação quando o backup foi criado.",
"Maintenance_Tool_unlockFields_selecteddev": "",
"Maintenance_Tool_unlockFields_selecteddev_noti": "",
"Maintenance_Tool_unlockFields_selecteddev": "Desbloquear campos de dispositivo",
"Maintenance_Tool_unlockFields_selecteddev_noti": "Desbloquear campos",
"Maintenance_Tool_upgrade_database_noti": "Atualizar a base de dados",
"Maintenance_Tool_upgrade_database_noti_text": "Tem certeza de que deseja atualizar a base de dados?<br>(talvez prefira arquivá-la)",
"Maintenance_Tool_upgrade_database_text": "Este botão atualizará 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_Logging": "Registos",
"Maintenance_Tools_Tab_Settings": "Configurações",
"Maintenance_Tools_Tab_Tools": "Ferramentas",
"Maintenance_Tools_Tab_UISettings": "Configurações de interface",
@@ -500,7 +503,7 @@
"Maintenance_arp_status_off": "está atualmente desativado",
"Maintenance_arp_status_on": "Scan em curso",
"Maintenance_built_on": "Construído em",
"Maintenance_current_version": "Você está atualizado. Confira o que <a href=\"https://github.com/netalertx/NetAlertX/issues/138\" target=\"_blank\"> estou a trabalhar em</a>.",
"Maintenance_current_version": "Você está atualizado. Confira no que é que <a href=\"https://github.com/netalertx/NetAlertX/issues/138\" target=\"_blank\">estou a trabalhar em</a>.",
"Maintenance_database_backup": "Backups DB",
"Maintenance_database_backup_found": "foram encontrados backups",
"Maintenance_database_backup_total": "uso total do disco",
@@ -535,7 +538,7 @@
"Navigation_Report": "Reports enviados",
"Navigation_Settings": "Definições",
"Navigation_SystemInfo": "Informação de sistema",
"Navigation_Workflows": "Workflows",
"Navigation_Workflows": "Fluxos de Trabalho",
"Network_Assign": "Conectar ao nodo de network <i class=\"fa fa-server\"></i> em cima",
"Network_Cant_Assign": "Não é possível atribuir o node raiz da Internet como um node folha filho.",
"Network_Cant_Assign_No_Node_Selected": "Não é possível atribuir, nenhum node pai selecionado.",
@@ -562,247 +565,247 @@
"Network_ManageEdit_Name": "Novo nome de dispositivo",
"Network_ManageEdit_Name_text": "Nome sem caracteres especiais",
"Network_ManageEdit_Port": " Nova contagem de portas",
"Network_ManageEdit_Port_text": "Deixe em branco para Wi-Fi e Powerline.",
"Network_ManageEdit_Submit": "",
"Network_ManageEdit_Type": "",
"Network_ManageEdit_Type_text": "",
"Network_ManageLeaf": "",
"Network_ManageUnassign": "",
"Network_NoAssignedDevices": "",
"Network_NoDevices": "",
"Network_Node": "",
"Network_Node_Name": "",
"Network_Parent": "",
"Network_Root": "",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "",
"Network_Table_IP": "",
"Network_Table_State": "",
"Network_Title": "",
"Network_UnassignedDevices": "",
"Notifications_All": "",
"Notifications_Mark_All_Read": "",
"PIALERT_WEB_PASSWORD_description": "",
"PIALERT_WEB_PASSWORD_name": "",
"PIALERT_WEB_PROTECTION_description": "",
"PIALERT_WEB_PROTECTION_name": "",
"PLUGINS_KEEP_HIST_description": "",
"PLUGINS_KEEP_HIST_name": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "",
"Plugins_DeleteAll": "",
"Plugins_Filters_Mac": "",
"Plugins_History": "",
"Plugins_Obj_DeleteListed": "",
"Plugins_Objects": "",
"Plugins_Out_of": "",
"Plugins_Unprocessed_Events": "",
"Plugins_no_control": "",
"Presence_CalHead_day": "",
"Presence_CalHead_lang": "",
"Presence_CalHead_month": "",
"Presence_CalHead_quarter": "",
"Presence_CalHead_week": "",
"Presence_CalHead_year": "",
"Presence_CallHead_Devices": "",
"Presence_Key_OnlineNow": "",
"Presence_Key_OnlineNow_desc": "",
"Presence_Key_OnlinePast": "",
"Presence_Key_OnlinePastMiss": "",
"Presence_Key_OnlinePastMiss_desc": "",
"Presence_Key_OnlinePast_desc": "",
"Presence_Loading": "",
"Presence_Shortcut_AllDevices": "",
"Presence_Shortcut_Archived": "",
"Presence_Shortcut_Connected": "",
"Presence_Shortcut_Devices": "",
"Presence_Shortcut_DownAlerts": "",
"Presence_Shortcut_Favorites": "",
"Presence_Shortcut_NewDevices": "",
"Presence_Title": "",
"REFRESH_FQDN_description": "",
"REFRESH_FQDN_name": "",
"REPORT_DASHBOARD_URL_description": "",
"REPORT_DASHBOARD_URL_name": "",
"REPORT_ERROR": "",
"REPORT_MAIL_description": "",
"REPORT_MAIL_name": "",
"REPORT_TITLE": "",
"RandomMAC_hover": "",
"Reports_Sent_Log": "",
"SCAN_SUBNETS_description": "",
"SCAN_SUBNETS_name": "",
"SYSTEM_TITLE": "",
"Setting_Override": "",
"Setting_Override_Description": "",
"Settings_Metadata_Toggle": "",
"Settings_Show_Description": "",
"Settings_device_Scanners_desync": "",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "",
"Systeminfo_CPU_Cores": "",
"Systeminfo_CPU_Name": "",
"Systeminfo_CPU_Speed": "",
"Systeminfo_CPU_Temp": "",
"Systeminfo_CPU_Vendor": "",
"Systeminfo_Client_Resolution": "",
"Systeminfo_Client_User_Agent": "",
"Systeminfo_General": "",
"Systeminfo_General_Date": "",
"Systeminfo_General_Date2": "",
"Systeminfo_General_Full_Date": "",
"Systeminfo_General_TimeZone": "",
"Systeminfo_Memory": "",
"Systeminfo_Memory_Total_Memory": "",
"Systeminfo_Memory_Usage": "",
"Systeminfo_Memory_Usage_Percent": "",
"Systeminfo_Motherboard": "",
"Systeminfo_Motherboard_BIOS": "",
"Systeminfo_Motherboard_BIOS_Date": "",
"Systeminfo_Motherboard_BIOS_Vendor": "",
"Systeminfo_Motherboard_Manufactured": "",
"Systeminfo_Motherboard_Name": "",
"Systeminfo_Motherboard_Revision": "",
"Systeminfo_Network": "",
"Systeminfo_Network_Accept_Encoding": "",
"Systeminfo_Network_Accept_Language": "",
"Systeminfo_Network_Connection_Port": "",
"Systeminfo_Network_HTTP_Host": "",
"Systeminfo_Network_HTTP_Referer": "",
"Systeminfo_Network_HTTP_Referer_String": "",
"Systeminfo_Network_Hardware": "",
"Systeminfo_Network_Hardware_Interface_Mask": "",
"Systeminfo_Network_Hardware_Interface_Name": "",
"Systeminfo_Network_Hardware_Interface_RX": "",
"Systeminfo_Network_Hardware_Interface_TX": "",
"Systeminfo_Network_IP": "",
"Systeminfo_Network_IP_Connection": "",
"Systeminfo_Network_IP_Server": "",
"Systeminfo_Network_MIME": "",
"Systeminfo_Network_Request_Method": "",
"Systeminfo_Network_Request_Time": "",
"Systeminfo_Network_Request_URI": "",
"Systeminfo_Network_Secure_Connection": "",
"Systeminfo_Network_Secure_Connection_String": "",
"Systeminfo_Network_Server_Name": "",
"Systeminfo_Network_Server_Name_String": "",
"Systeminfo_Network_Server_Query": "",
"Systeminfo_Network_Server_Query_String": "",
"Systeminfo_Network_Server_Version": "",
"Systeminfo_Services": "",
"Systeminfo_Services_Description": "",
"Systeminfo_Services_Name": "",
"Systeminfo_Storage": "",
"Systeminfo_Storage_Device": "",
"Systeminfo_Storage_Mount": "",
"Systeminfo_Storage_Size": "",
"Systeminfo_Storage_Type": "",
"Systeminfo_Storage_Usage": "",
"Systeminfo_Storage_Usage_Free": "",
"Systeminfo_Storage_Usage_Mount": "",
"Systeminfo_Storage_Usage_Total": "",
"Systeminfo_Storage_Usage_Used": "",
"Systeminfo_System": "",
"Systeminfo_System_AVG": "",
"Systeminfo_System_Architecture": "",
"Systeminfo_System_Kernel": "",
"Systeminfo_System_OSVersion": "",
"Systeminfo_System_Running_Processes": "",
"Systeminfo_System_System": "",
"Systeminfo_System_Uname": "",
"Systeminfo_System_Uptime": "",
"Systeminfo_This_Client": "",
"Systeminfo_USB_Devices": "",
"TICKER_MIGRATE_TO_NETALERTX": "",
"TIMEZONE_description": "",
"TIMEZONE_name": "",
"UI_DEV_SECTIONS_description": "",
"UI_DEV_SECTIONS_name": "",
"UI_ICONS_description": "",
"UI_ICONS_name": "",
"UI_LANG_description": "",
"UI_LANG_name": "",
"UI_MY_DEVICES_description": "",
"UI_MY_DEVICES_name": "",
"UI_NOT_RANDOM_MAC_description": "",
"UI_NOT_RANDOM_MAC_name": "",
"UI_PRESENCE_description": "",
"UI_PRESENCE_name": "",
"UI_REFRESH_description": "",
"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_tooltip": "",
"add_option_event_tooltip": "",
"copy_icons_event_tooltip": "",
"devices_old": "",
"general_event_description": "",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "",
"report_guid_missing": "",
"report_select_format": "",
"report_time": "",
"run_event_tooltip": "",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "",
"settings_device_scanners": "",
"settings_device_scanners_icon": "",
"settings_device_scanners_info": "",
"settings_device_scanners_label": "",
"settings_enabled": "",
"settings_enabled_icon": "",
"settings_expand_all": "",
"settings_imported": "",
"settings_imported_label": "",
"settings_missing": "",
"settings_missing_block": "",
"settings_old": "",
"settings_other_scanners": "",
"settings_other_scanners_icon": "",
"settings_other_scanners_label": "",
"settings_publishers": "",
"settings_publishers_icon": "",
"settings_publishers_info": "",
"settings_publishers_label": "",
"settings_readonly": "",
"settings_saved": "",
"settings_system_icon": "",
"settings_system_label": "",
"settings_update_item_warning": "",
"Network_ManageEdit_Port_text": "Deixe em branco para Wi-Fi e Powerline",
"Network_ManageEdit_Submit": "Guardar Alterações",
"Network_ManageEdit_Type": "Novo tipo de dispositivo",
"Network_ManageEdit_Type_text": "-- Selecionar tipo --",
"Network_ManageLeaf": "Gerir atribuição",
"Network_ManageUnassign": "Cancelar Atribuição",
"Network_NoAssignedDevices": "Este nó de rede não tem quaisquer dispositivos atribuídos (nós folha). Atribua um abaixo ou vá à aba <b><i class=\"fa fa-info-circle\"></i> Detalhes</b> de qualquer dispositivo em <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Dispositivos</b></a>, e atribua os mesmos a uma rede <b><i class=\"fa fa-server\"></i> Nó (MAC)</b> e <b><i class=\"fa fa-ethernet\"></i> Porta</b> lá.",
"Network_NoDevices": "Sem dispositivos para configurar",
"Network_Node": "Nó de rede",
"Network_Node_Name": "Nome do nó",
"Network_Parent": "Dispositivo da rede parente",
"Network_Root": "Nó raiz",
"Network_Root_Not_Configured": "Selecione um tipo de dispositivo de rede, por exemplo um <b>Gateway</b>, no campo <b>Tipo</b> do <a href=\"deviceDetails.php?mac=Internet\">o dispositivo raiz da Internet</a> para começar a configurar este ecrã. <br/><br/> Mais documentação pode ser encontrada no guia <a href=\"https://docs.netalertx.com/NETWORK_TREE\" target=\"_blank\">Como configurar a sua página de Rede</a>",
"Network_Root_Unconfigurable": "Raiz não configurável",
"Network_ShowArchived": "Mostrar arquivados",
"Network_ShowOffline": "Mostrar offline",
"Network_Table_Hostname": "Nome do anfitrião",
"Network_Table_IP": "IP",
"Network_Table_State": "Estado",
"Network_Title": "Visão geral da rede",
"Network_UnassignedDevices": "Dispositivos não atribuídos",
"Notifications_All": "Todas as notificações",
"Notifications_Mark_All_Read": "Marcar todas como lidas",
"PIALERT_WEB_PASSWORD_description": "A palavra passe padrão é <code>123456</code>. Para mudar esta palavra passe execute <code>/app/back/pialert-cli</code> no contentor ou use o <a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code> Definir plugin de palavra passe</a>.",
"PIALERT_WEB_PASSWORD_name": "Palavra passe de início de sessão",
"PIALERT_WEB_PROTECTION_description": "Quando ativo um diálogo de início de sessão é mostrado. Leia abaixo com cuidado se ficar trancado fora da sua instância.",
"PIALERT_WEB_PROTECTION_name": "Ativar início de sessão",
"PLUGINS_KEEP_HIST_description": "Quantas entradas de resultados de análise de Histórico de Plugins devem ser mantidos (por Plugin, e não específico a dispositivos).",
"PLUGINS_KEEP_HIST_name": "Histórico de Plugins",
"PRAGMA_JOURNAL_SIZE_LIMIT_description": "Tamanho máximo do SQLite WAL (Write-Ahead Log) em MB antes de ativar pontos de controlo automáticos. Valores mais pequenos (10-20MB) reduzem utilização de disco/armazenamento durante análises. Valores mais altos (50-100MB) reduzem picos de CPU durante operações mas podem usar mais RAM e espaço no disco. O padrão <code>50 MB</code> equilibra ambos. Útil para sistemas com recursos limitados como dispositivos NAS com cartões SD. Reinicie o servidor para que as mudanças entrem em vigor após guardar as definições.",
"PRAGMA_JOURNAL_SIZE_LIMIT_name": "Tamanho limite do WAL (MB)",
"Plugins_DeleteAll": "Eliminar todos (filtros são ignorados)",
"Plugins_Filters_Mac": "Filtro Mac",
"Plugins_History": "Histórico de Eventos",
"Plugins_Obj_DeleteListed": "Eliminar Objetos Listados",
"Plugins_Objects": "Objetos de Plugin",
"Plugins_Out_of": "de",
"Plugins_Unprocessed_Events": "Eventos Não-Processados",
"Plugins_no_control": "Nenhum controlo de formulário foi encontrado para renderizar este valor.",
"Presence_CalHead_day": "dia",
"Presence_CalHead_lang": "en-us",
"Presence_CalHead_month": "mês",
"Presence_CalHead_quarter": "trimestre",
"Presence_CalHead_week": "semana",
"Presence_CalHead_year": "ano",
"Presence_CallHead_Devices": "Dispositivos",
"Presence_Key_OnlineNow": "Agora online",
"Presence_Key_OnlineNow_desc": "Dispositivo detetado como online na última análise.",
"Presence_Key_OnlinePast": "Últimos online",
"Presence_Key_OnlinePastMiss": "Últimos online (desajustado)",
"Presence_Key_OnlinePastMiss_desc": "Dispositivo online no passado, mas atualmente offline, mas o início de sessão pode estar em falta ou tem dados em conflito.",
"Presence_Key_OnlinePast_desc": "Dispositivo online no passado, mas atualmente offline.",
"Presence_Loading": "A Carregar…",
"Presence_Shortcut_AllDevices": "Os meus dispositivos",
"Presence_Shortcut_Archived": "Arquivado",
"Presence_Shortcut_Connected": "Conectado",
"Presence_Shortcut_Devices": "Dispositivos",
"Presence_Shortcut_DownAlerts": "Alertas de Interrupção",
"Presence_Shortcut_Favorites": "Favoritos",
"Presence_Shortcut_NewDevices": "Novos dispositivos",
"Presence_Title": "Presença por dispositivo",
"REFRESH_FQDN_description": "Reanalisa todos os dispositivos e atualiza o seu Nome de Domínio Qualificado Completo (FQDN). Se estiver desativado, apenas dispositivos sem um nome conhecido serão analisados para melhorar o desempenho. Neste caso, FQDN é atualizado apenas durante a descoberta de dispositivos inicial.",
"REFRESH_FQDN_name": "Atualizar FQDN",
"REPORT_DASHBOARD_URL_description": "Este URL é usado como base para gerar links nos relatórios HTML (p.ex.: emails). Introduza o URL começado com <code>http://</code> incluindo o número da porta (sem barra final <code>/</code>).",
"REPORT_DASHBOARD_URL_name": "URL NetAlertX",
"REPORT_ERROR": "A página que procura está indisponível temporariamente, por favor tente outra vez após alguns segundos",
"REPORT_MAIL_description": "Se ativo, um email é enviado com uma lista de mudanças às quais subscreveu. Por favor preencha também todas as definições relacionadas com a configuração SMTP abaixo. Se está a encontrar problemas, defina <code>LOG_LEVEL</code> para <code>debug</code> e verifique o <a href=\"/maintenance.php#tab_Logging\">registo de erros</a>.",
"REPORT_MAIL_name": "Ativar email",
"REPORT_TITLE": "Reportar",
"RandomMAC_hover": "Este dispositivo tem um endereço MAC aleatório",
"Reports_Sent_Log": "Registo de relatórios enviado",
"SCAN_SUBNETS_description": "A maior parte dos scanners on-network (ARP-SCAN, NMAP, NSLOOKUP, DIG) baseiam-se em scanear interfaces de rede específicas e subredes. Veja a <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">documentação de subredes</a> para ajudar com esta definição, especialmente VLANs, quais VLANs são suportadas, ou como descobrir a máscara de rede e a sua interface. <br/> <br/> Uma alternativa a scanners on-network é ativar outro scanner de dispositivos/importadores que não dependam do NetAlert<sup>X</sup> tenha acesso à rede (UNIFI, dhcp.leases, PiHole, etc.). <br/> <br/> Nota: O tempo de scaneamento em si depende do número de endereços de IP a verificar, por isso configure isto com cuidado com a máscara e interface de rede apropriadas.",
"SCAN_SUBNETS_name": "Redes a scanear",
"SYSTEM_TITLE": "Informação de Sistema",
"Setting_Override": "Sobrescrever valor",
"Setting_Override_Description": "Ativar esta opção irá sobrescrever o valor predefinido pela App com o valor especificado acima.",
"Settings_Metadata_Toggle": "Mostrar/esconder metadados para definição especificada.",
"Settings_Show_Description": "Mostrar descrição",
"Settings_device_Scanners_desync": "⚠ Os horários de procura de dispositivos estão dessincronizados.",
"Settings_device_Scanners_desync_popup": "Horários de scanners de dispositivos (<code>*_RUN_SCHD</code>) não são o mesmo. Isto resultará em notificações de dispositivo online/offline inconsistentes. A menos que isto seja intencional, por favor use o mesmo horário para todos os <b>🔍scanners de dispositivos</b> ativos.",
"Speedtest_Results": "Resultados do Teste de Velocidade",
"Systeminfo_AvailableIps": "IPs Disponíveis",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "Cores CPU:",
"Systeminfo_CPU_Name": "Nome do CPU:",
"Systeminfo_CPU_Speed": "Velocidade do CPU:",
"Systeminfo_CPU_Temp": "Temperatura do CPU:",
"Systeminfo_CPU_Vendor": "Fornecedor do CPU:",
"Systeminfo_Client_Resolution": "Resolução do Browser:",
"Systeminfo_Client_User_Agent": "Agente do Utilizador:",
"Systeminfo_General": "Geral",
"Systeminfo_General_Date": "Data:",
"Systeminfo_General_Date2": "Data2:",
"Systeminfo_General_Full_Date": "Data Completa:",
"Systeminfo_General_TimeZone": "Fuso Horário:",
"Systeminfo_Memory": "Memória",
"Systeminfo_Memory_Total_Memory": "Memória total:",
"Systeminfo_Memory_Usage": "Utilização de memória:",
"Systeminfo_Memory_Usage_Percent": "Memória %:",
"Systeminfo_Motherboard": "Motherboard",
"Systeminfo_Motherboard_BIOS": "BIOS:",
"Systeminfo_Motherboard_BIOS_Date": "Data da BIOS:",
"Systeminfo_Motherboard_BIOS_Vendor": "Fabricante da BIOS:",
"Systeminfo_Motherboard_Manufactured": "Fabricado por:",
"Systeminfo_Motherboard_Name": "Nome:",
"Systeminfo_Motherboard_Revision": "Revisão:",
"Systeminfo_Network": "Rede",
"Systeminfo_Network_Accept_Encoding": "Aceitar codificação:",
"Systeminfo_Network_Accept_Language": "Aceitar idioma:",
"Systeminfo_Network_Connection_Port": "Porta de conexão:",
"Systeminfo_Network_HTTP_Host": "Anfitrião HTTP:",
"Systeminfo_Network_HTTP_Referer": "Referenciador HTTP:",
"Systeminfo_Network_HTTP_Referer_String": "Nenhum referenciador HTTP",
"Systeminfo_Network_Hardware": "Hardware de Rede",
"Systeminfo_Network_Hardware_Interface_Mask": "Máscara de Rede",
"Systeminfo_Network_Hardware_Interface_Name": "Nome da Interface",
"Systeminfo_Network_Hardware_Interface_RX": "Recebido",
"Systeminfo_Network_Hardware_Interface_TX": "Transmitido",
"Systeminfo_Network_IP": "Internet IP:",
"Systeminfo_Network_IP_Connection": "Conexão IP:",
"Systeminfo_Network_IP_Server": "IP do Servidor:",
"Systeminfo_Network_MIME": "MIME:",
"Systeminfo_Network_Request_Method": "Método do Pedido:",
"Systeminfo_Network_Request_Time": "Tempo do pedido:",
"Systeminfo_Network_Request_URI": "URI do Pedido:",
"Systeminfo_Network_Secure_Connection": "Ligação segura:",
"Systeminfo_Network_Secure_Connection_String": "Sem (HTTP)",
"Systeminfo_Network_Server_Name": "Nome do servidor:",
"Systeminfo_Network_Server_Name_String": "Nome de servidor não encontrado",
"Systeminfo_Network_Server_Query": "Consulta de servidor:",
"Systeminfo_Network_Server_Query_String": "Nenhuma string de consulta",
"Systeminfo_Network_Server_Version": "Versão do Servidor:",
"Systeminfo_Services": "Serviços",
"Systeminfo_Services_Description": "Descrição do Serviço",
"Systeminfo_Services_Name": "Nome do Serviço",
"Systeminfo_Storage": "Armazenamento",
"Systeminfo_Storage_Device": "Dispositivo:",
"Systeminfo_Storage_Mount": "Ponto de montagem:",
"Systeminfo_Storage_Size": "Tamanho:",
"Systeminfo_Storage_Type": "Tipo:",
"Systeminfo_Storage_Usage": "Utilização de armazenamento",
"Systeminfo_Storage_Usage_Free": "Livre:",
"Systeminfo_Storage_Usage_Mount": "Ponto de montagem:",
"Systeminfo_Storage_Usage_Total": "Total:",
"Systeminfo_Storage_Usage_Used": "Usado:",
"Systeminfo_System": "Sistema",
"Systeminfo_System_AVG": "Média de carregamento:",
"Systeminfo_System_Architecture": "Arquitetura:",
"Systeminfo_System_Kernel": "Kernel:",
"Systeminfo_System_OSVersion": "Sistema Operativo:",
"Systeminfo_System_Running_Processes": "Processos em execução:",
"Systeminfo_System_System": "Sistema:",
"Systeminfo_System_Uname": "Uname:",
"Systeminfo_System_Uptime": "Tempo de atividade:",
"Systeminfo_This_Client": "Este Cliente",
"Systeminfo_USB_Devices": "Dispositivos USB",
"TICKER_MIGRATE_TO_NETALERTX": "⚠ Antigos locais de montagem detetados. Siga <a href=\"https://docs.netalertx.com/MIGRATION\" target=\"_blank\">este guia</a> para migrar as novas pastas <code>/data/config</code> e <code>/data/db</code> e o contentor <code>netalertx</code>.",
"TIMEZONE_description": "Fuso horário para mostras estatísticas corretamente. Encontre o seu fuso horário <a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\" rel=\"nofollow\">aqui</a>.",
"TIMEZONE_name": "Fuso horário",
"UI_DEV_SECTIONS_description": "Selecione quais elementos UI a esconder na página de dispositivos.",
"UI_DEV_SECTIONS_name": "Esconder secções de dispositivos",
"UI_ICONS_description": "Uma lista de ícones pré-definidos. Proceda com cautela, a maneira preferível de adicionar ícones é descrita na <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">Documentação de ícones</a>. Pode adicionar uma etiqueta codificada em base64 SVG HTML ou Font-awesome HTML.",
"UI_ICONS_name": "Ícones pré-definidos",
"UI_LANG_description": "Selecione o idioma de UI preferido. Ajude a traduzir ou sugira idiomas no portal online do <a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a>.",
"UI_LANG_name": "Idioma do UI",
"UI_MY_DEVICES_description": "Dispositivos cujo estado devem ser mostrados na vista predefinida <b>Os meus dispositivos</b>.",
"UI_MY_DEVICES_name": "Mostrar na vista Os meus dispositivos",
"UI_NOT_RANDOM_MAC_description": "Prefixos mac que não devem ser marcados como dispositivos Aleatórios. Introduza, por exemplo, <code>52</code> para excluir dispositivos que começam com <code>52:xx:xx:xx:xx:xx</code> de serem marcados como dispositivos com um endereço MAC aleatório.",
"UI_NOT_RANDOM_MAC_name": "Não marcar como Aleatório",
"UI_PRESENCE_description": "Selecione quais estatutos devem ser mostrados na <b>Presença de dispositivo</b> gráfico na página de <a href=\"/devices.php\" target=\"_blank\">Dispositivos</a>.",
"UI_PRESENCE_name": "Mostrar em gráfico de presença",
"UI_REFRESH_description": "Introduza o número de segundo após os quais o UI atualiza. Defina para <code>0</code> para desativar.",
"UI_REFRESH_name": "Auto-atualizar UI",
"VERSION_description": "Valor auxiliar de versão ou data e hora para verificar se a aplicação foi atualizada.",
"VERSION_name": "Versão ou data e hora",
"WF_Action_Add": "Adicionar Ação",
"WF_Action_field": "Campo",
"WF_Action_type": "Tipo",
"WF_Action_value": "Valor",
"WF_Actions": "Ações",
"WF_Add": "Adicionar Fluxo de Trabalho",
"WF_Add_Condition": "Adicionar Condição",
"WF_Add_Group": "Adicionar Grupo",
"WF_Condition_field": "Campo",
"WF_Condition_operator": "Operador",
"WF_Condition_value": "Valor",
"WF_Conditions": "Condições",
"WF_Conditions_logic_rules": "Regras de lógica",
"WF_Duplicate": "Duplicar Fluxo de Trabalho",
"WF_Enabled": "Fluxo de trabalho ativo",
"WF_Export": "Exportar Fluxo de Trabalho",
"WF_Export_Copy": "Copiar para o fluxo de trabalho abaixo e importar para onde for preciso.",
"WF_Import": "Importar Fluxo de Trabalho",
"WF_Import_Copy": "Colar no fluxo de trabalho que copiou anteriormente.",
"WF_Name": "Nome do fluxo de trabalho",
"WF_Remove": "Remover Fluxo de Trabalho",
"WF_Remove_Copy": "Quer remover este fluxo de trabalho?",
"WF_Save": "Guardar Fluxos de Trabalho",
"WF_Trigger": "Acionador",
"WF_Trigger_event_type": "Tipo de evento",
"WF_Trigger_type": "Tipo de acionador",
"add_icon_event_tooltip": "Adicionar novo ícone",
"add_option_event_tooltip": "Adicionar novo valor",
"copy_icons_event_tooltip": "Sobrescrever ícones de todos os dispositivos com o mesmo tipo de dispositivo",
"devices_old": "A atualizar…",
"general_event_description": "O evento que ativou pode demorar algum tempo até que os processos de planos de fundo terminem. A execução acabou uma vez que a lista de execução abaixo fica vazia (Verifique o <a href='/maintenance.php#tab_Logging'>registo de erros</a> se encontrar problemas). <br/> <br/> Lista de execução:",
"general_event_title": "A executar um evento ad-hoc",
"go_to_device_event_tooltip": "Navegar para o dispositivo",
"go_to_node_event_tooltip": "Navegar para a página de Rede do nó em questão",
"new_version_available": "Uma versão nova está disponível.",
"report_guid": "Guid de Notificação:",
"report_guid_missing": "Notificação associada não foi encontrada. Há um pequeno atraso entre notificações recentemente enviadas e as mesmas estarem disponíveis. Atualize a sua página e cache após alguns segundos. Também é possível que a notificação selecionada tenha sido eliminada durante a manutenção como especificado na definição <code>DBCLNP_NOTIFI_HIST</code>. <br/> <br/>Em vez disso, a última notificação é mostrada. A notificação em falta tem o seguinte GUID:",
"report_select_format": "Selecionar Formato:",
"report_time": "Tempo de notificação:",
"run_event_tooltip": "Ative a definição e guarde as suas mudanças primeiro antes de corrê-lo.",
"select_icon_event_tooltip": "Selecionar ícone",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Core",
"settings_device_scanners": "Scaneadores de dispositivos usados para descobrir dispositivos que escrevem para a tabela da base de dados CurrentScan.",
"settings_device_scanners_icon": "fa-solid fa-magnifying-glass-plus",
"settings_device_scanners_info": "Carregar mais scaneadores de dispositivos com a definição <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_label": "Scaneadores de dispositivos",
"settings_enabled": "Definições ativas",
"settings_enabled_icon": "fa-solid fa-toggle-on",
"settings_expand_all": "Expandir todos",
"settings_imported": "Na última vez, as definições foram importadas a partir do ficheiro app.conf",
"settings_imported_label": "Definições importadas",
"settings_missing": "Nem todas as configurações foram carregadas! Carga elevada na base de dados ou na sequência de começo da aplicação. Clique no botão 🔄 de atualizar no topo.",
"settings_missing_block": "Erro: Definições não carregadas corretamente. Clique no botão 🔄 de atualizar no topo ou, alternativamente, verifique o registo do navegador para detalhes (F12).",
"settings_old": "A importar definições e a reinicializar…",
"settings_other_scanners": "Outros plugins de scaneadores que não são do dispositivo estão atualmente ativos.",
"settings_other_scanners_icon": "fa-solid fa-recycle",
"settings_other_scanners_label": "Outros scaneadores",
"settings_publishers": "Gateways de notificação ativados - editores que enviarão uma notificação de acordo com as suas definições.",
"settings_publishers_icon": "fa-solid fa-paper-plane",
"settings_publishers_info": "Carregar mais Editores com a definição <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_publishers_label": "Editores",
"settings_readonly": "Não foi possível LÊR ou ESCREVER na <code>app.conf</code>. Tente reiniciar o contentoer e ler a <a href=\"https://docs.netalertx.com/FILE_PERMISSIONS\" target=\"_blank\">documentação de permissões de ficheiro</a>",
"settings_saved": "<br/>Definições guardadas.<br/> A recarregar...<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": "Atualize o valor abaixo. Tenha cuidado em seguir o formato anterior. <b>Validação não é efetuada.</b>",
"test_event_tooltip": "Guarde as alterações antes de testar as definições."
}
}

View File

@@ -49,7 +49,7 @@
"BackDevices_DBTools_DelEventsError": "Ошибка удаления событий",
"BackDevices_DBTools_ImportCSV": "Устройства из файла CSV были успешно импортированы.",
"BackDevices_DBTools_ImportCSVError": "Не удалось импортировать файл CSV. Убедитесь, что формат правильный.",
"BackDevices_DBTools_ImportCSVMissing": "CSV-файл не найден в<b>/config/devices.csv.</b>",
"BackDevices_DBTools_ImportCSVMissing": "CSV-файл не найден в <b>/config/devices.csv.</b>",
"BackDevices_DBTools_Purge": "Самые старые резервные копии были удалены",
"BackDevices_DBTools_UpdDev": "Устройство успешно обновлено. При выполнении сканирования может потребоваться некоторое время для перезагрузки основного списка устройств.",
"BackDevices_DBTools_UpdDevError": "Ошибка обновления устройства",
@@ -66,6 +66,8 @@
"CustProps_cant_remove": "Невозможно удалить, необходимо хотя бы одно свойство.",
"DAYS_TO_KEEP_EVENTS_description": "Это настройка обслуживания. Здесь указывается количество дней, в течение которых будут храниться записи о событиях. Все старые события будут периодически удаляться. Также применимо к истории событий плагина.",
"DAYS_TO_KEEP_EVENTS_name": "Удалить события старше",
"DEEP_SLEEP_description": "Снижает нагрузку на процессор за счет увеличения времени ожидания между циклами обработки. При включении, сканирование может быть отложено до 1 минуты, а пользовательский интерфейс может стать менее отзывчивым.",
"DEEP_SLEEP_name": "Глубокий сон",
"DISCOVER_PLUGINS_description": "Отключите эту опцию, чтобы ускорить инициализацию и сохранение настроек. При отключении этой опции плагины не обнаруживаются, и вы не можете добавлять новые плагины в параметр <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Обзор плагинов",
"DevDetail_Children_Title": "Дочерние отношения",
@@ -185,7 +187,7 @@
"DevDetail_Vendor_hover": "Поставщик должен определяться автоматически. Вы можете перезаписать или добавить свое собственное значение.",
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
"DevDetail_button_AddIcon": "Добавить новый значок",
"DevDetail_button_AddIcon_Help": "Вставьте HTML-тег SVG или Font Awesome. Подробная информация по значкам по ссылке <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\"></a>.",
"DevDetail_button_AddIcon_Help": "Вставьте HTML-тег SVG или значок Font Awesome. Подробнее читайте в <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">документации по иконкам</a>.",
"DevDetail_button_AddIcon_Tooltip": "Добавьте к этому устройству новый значок, которого еще нет в раскрывающемся списке.",
"DevDetail_button_Delete": "Удалить устройство",
"DevDetail_button_DeleteEvents": "Удалить события",
@@ -208,7 +210,7 @@
"Device_NoData_Help": "Если устройства не отображаются после сканирования, проверьте настройку SCAN_SUBNETS и <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">документацию</a>.",
"Device_NoData_Scanning": "Ожидание первого сканирования — это может занять несколько минут после первоначальной настройки.",
"Device_NoData_Title": "Устройства пока не найдены",
"Device_NoMatch_Title": "",
"Device_NoMatch_Title": "Нет устройств, соответствующих текущему фильтру",
"Device_Save_Failed": "Не удалось сохранить устройство",
"Device_Save_Unauthorized": "Не авторизован - недействительный токен API",
"Device_Saved_Success": "Устройство успешно сохранено",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "Имя",
"Device_TableHead_NetworkSite": "Сайт устройства",
"Device_TableHead_Owner": "Владелец",
"Device_TableHead_ParentRelType": "Тип отношений",
"Device_TableHead_Parent_MAC": "Родительский узел сети",
"Device_TableHead_ParentRelType": "Отношения",
"Device_TableHead_Parent_MAC": "Родительский узел",
"Device_TableHead_Port": "Порт",
"Device_TableHead_PresentLastScan": "Присутствие",
"Device_TableHead_ReqNicsOnline": "Требуется NIC онлайн",
@@ -269,7 +271,7 @@
"Device_Tablelenght_all": "Все",
"Device_Title": "Устройства",
"Devices_Filters": "Фильтры",
"ENABLE_PLUGINS_description": "Включает функциональность <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">плагинов.</a> Загрузка плагинов требует больше аппаратных ресурсов, поэтому вы можете отключить их в маломощной системе.",
"ENABLE_PLUGINS_description": "Включает функциональность <a target=\"_blank\" href=\"https://docs.netalertx.com/PLUGINS\">плагинов</a>. Загрузка плагинов требует больше аппаратных ресурсов, поэтому вы можете отключить их в маломощной системе.",
"ENABLE_PLUGINS_name": "Разрешить плагины",
"ENCRYPTION_KEY_description": "Ключ шифрования данных.",
"ENCRYPTION_KEY_name": "Ключ шифрования",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "ОШИБКА - Возможно, база данных заблокирована. Проверьте инструменты разработчика F12 -> Консоль или повторите попытку позже.",
"Gen_NetworkMask": "Маска сети",
"Gen_New": "Новый",
"Gen_No_Data": "Нет данных",
"Gen_Offline": "Оффлайн",
"Gen_Okay": "OK",
"Gen_Online": "Онлайн",
@@ -403,7 +406,7 @@
"Maint_Restart_Server_noti_text": "Вы уверены, что хотите перезапустить внутренний сервер? Это может привести к несогласованности работы приложения. Сначала создайте резервную копию настроек. <br/> <br/> Примечание: Это может занять несколько минут.",
"Maintenance_InitCheck": "Инициализация проверки",
"Maintenance_InitCheck_Checking": "Проверяется…",
"Maintenance_InitCheck_QuickSetupGuide": "Убедитесь, что вы следовали быстрому руководству по настройке <a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\"></a>.",
"Maintenance_InitCheck_QuickSetupGuide": "Убедитесь, что вы следовали <a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">краткому руководству по настройке</a>.",
"Maintenance_InitCheck_Success": "Приложение инициализировано успешно!",
"Maintenance_ReCheck": "Повторить проверку",
"Maintenance_Running_Version": "Установленная версия",
@@ -412,7 +415,7 @@
"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_DownloadWorkflows_text": "Загрузите полную резервную копию ваших Workflow, хранящихся в файле <code>workflows.json</code>.",
"Maintenance_Tool_ExportCSV": "Экспорт устройств (csv)",
"Maintenance_Tool_ExportCSV_noti": "Экспорт устройств (csv)",
"Maintenance_Tool_ExportCSV_noti_text": "Вы уверены, что хотите создать файл CSV?",
@@ -422,7 +425,7 @@
"Maintenance_Tool_ImportCSV_noti_text": "Вы уверены, что хотите импортировать файл CSV? Это полностью <b>перезапишет</b> устройства в вашей базе данных.",
"Maintenance_Tool_ImportCSV_text": "Прежде чем использовать эту функцию, сделайте резервную копию. Импортируйте файл CSV (значения, разделенные запятыми), содержащий список устройств, включая сетевые отношения между сетевыми узлами и подключенными устройствами. Для этого поместите файл CSV с именем <b>devices.csv</b> в папку <b>/config</b>.",
"Maintenance_Tool_ImportConfig_noti": "Импорт настроек (app.conf)",
"Maintenance_Tool_ImportPastedCSV": "Импорт устройств CSV (вставка)",
"Maintenance_Tool_ImportPastedCSV": "Импорт устройств (csv) (вставка)",
"Maintenance_Tool_ImportPastedCSV_noti_text": "Вы уверены, что хотите импортировать вставленный CSV? Это полностью <b>перезапишет</b> устройства в вашей базе данных.",
"Maintenance_Tool_ImportPastedCSV_text": "Перед использованием этой функции, пожалуйста, создайте резервную копию. Импортируйте файл формата CSV (значения, разделенные запятыми), содержащий список устройств, включая сетевые связи между узлами сети и подключенными устройствами.",
"Maintenance_Tool_ImportPastedConfig": "Импорт настроек (вставка)",
@@ -585,7 +588,7 @@
"Network_UnassignedDevices": "Нераспределенные устройства",
"Notifications_All": "Все уведомления",
"Notifications_Mark_All_Read": "Отметить все как прочитанные",
"PIALERT_WEB_PASSWORD_description": "Пароль по умолчанию: <code>123456</code>. Чтобы изменить пароль, запустите <code>/app/back/pialert-cli</code> в контейнере или используйте <a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN. </code> Плагин установки пароля</a>.",
"PIALERT_WEB_PASSWORD_description": "Пароль по умолчанию: <code>123456</code>. Чтобы изменить пароль, запустите <code>/app/back/pialert-cli</code> в контейнере или используйте <a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code> Плагин установки пароля</a>.",
"PIALERT_WEB_PASSWORD_name": "Пароль входа",
"PIALERT_WEB_PROTECTION_description": "При включении отображается диалоговое окно входа в систему. Внимательно прочитайте ниже, если ваш экземпляр заблокирован.",
"PIALERT_WEB_PROTECTION_name": "Включить вход",
@@ -718,12 +721,12 @@
"Systeminfo_System_Uptime": "Время работы:",
"Systeminfo_This_Client": "Этот клиент",
"Systeminfo_USB_Devices": "USB-устройства",
"TICKER_MIGRATE_TO_NETALERTX": "⚠ Обнаружены устаревшие местоположения. Следуйте этому руководству <a href=\"https://docs.netalertx.com/MIGRATION\" target=\"_blank\"></a>, чтобы перейти на новые <code>/data/config</code> и <code>/data/db</code> папки и контейнер <code>netalertx</code>.",
"TICKER_MIGRATE_TO_NETALERTX": "⚠ Обнаружены устаревшие местоположения. Следуйте <a href=\"https://docs.netalertx.com/MIGRATION\" target=\"_blank\">этому руководству</a>, чтобы перейти на новые папки <code>/data/config</code> и <code>/data/db</code> и контейнер <code>netalertx</code>.",
"TIMEZONE_description": "Часовой пояс для корректного отображения статистики. Найдите свой часовой пояс <a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\" rel=\"nofollow\">здесь</a>.",
"TIMEZONE_name": "Часовой пояс",
"UI_DEV_SECTIONS_description": "Выберите, какие элементы интерфейса нужно скрыть на страницах «Устройства».",
"UI_DEV_SECTIONS_name": "Скрыть разделы устройств",
"UI_ICONS_description": "Список предопределенных значков. Действуйте осторожно: предпочтительный способ добавления значков описан в разделе <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\"> документации по значкам</a>. Вы можете добавить HTML-тег SVG в кодировке Base64 или HTML-тег Font-awesome.",
"UI_ICONS_description": "Список предопределенных значков. Действуйте осторожно: предпочтительный способ добавления значков описан в разделе <a href=\"https://docs.netalertx.com/ICONS\" target=\"_blank\">документации по значкам</a>. Вы можете добавить HTML-тег SVG в кодировке Base64 или HTML-тег Font-awesome.",
"UI_ICONS_name": "Предопределенные значки",
"UI_LANG_description": "Выберите предпочтительный язык пользовательского интерфейса. Помогите перевести или предложите языки на онлайн-портале <a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a>.",
"UI_LANG_name": "Язык интерфейса",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "",
"DAYS_TO_KEEP_EVENTS_description": "",
"DAYS_TO_KEEP_EVENTS_name": "",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "",
"Gen_Okay": "",
"Gen_Online": "",

View File

@@ -66,6 +66,8 @@
"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",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"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_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "HATA - Veritabanı kilitlenmiş olabilir - F12 Geliştirici araçlarını -> Konsol kısmını kontrol edin veya daha sonra tekrar deneyin.",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "Çevrimdışı",
"Gen_Okay": "Tamam",
"Gen_Online": "Çevrimiçi",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "Неможливо видалити, потрібна принаймні одна властивість.",
"DAYS_TO_KEEP_EVENTS_description": "Це налаштування обслуговування. Це визначає кількість днів записів про події, які зберігатимуться. Усі старіші події періодично видалятимуться. Також застосовується до історії подій плагінів.",
"DAYS_TO_KEEP_EVENTS_name": "Видалити події, старші за",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "Вимкніть цю опцію, щоб прискорити ініціалізацію та збереження налаштувань. Якщо вимкнено, плагіни не виявляються, і ви не можете додавати нові плагіни до параметра <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Відкрийте для себе плагіни",
"DevDetail_Children_Title": "Стосунки з дітьми",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "ПОМИЛКА БД може бути заблоковано перевірте F12 Інструменти розробника -> Консоль або спробуйте пізніше.",
"Gen_NetworkMask": "Маска мережі",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "Офлайн",
"Gen_Okay": "Гаразд",
"Gen_Online": "Онлайн",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "",
"DAYS_TO_KEEP_EVENTS_description": "",
"DAYS_TO_KEEP_EVENTS_name": "",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "",
"Gen_NetworkMask": "",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "",
"Gen_Okay": "",
"Gen_Online": "",

View File

@@ -66,6 +66,8 @@
"CustProps_cant_remove": "无法移除,至少需要保留一个属性。",
"DAYS_TO_KEEP_EVENTS_description": "这是维护设置。它指定将保留的事件条目的天数。所有较旧的事件将被定期删除。也适用于插件事件历史记录。",
"DAYS_TO_KEEP_EVENTS_name": "删除早于",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_name": "",
"DISCOVER_PLUGINS_description": "禁用此选项可加快初始化和设置保存的速度。当禁用时,插件不会被发现,并且您无法将新插件添加到 <code>LOADED_PLUGINS</code>设置中。",
"DISCOVER_PLUGINS_name": "发现插件",
"DevDetail_Children_Title": "子代关系",
@@ -247,8 +249,8 @@
"Device_TableHead_Name": "名字",
"Device_TableHead_NetworkSite": "网络站点",
"Device_TableHead_Owner": "所有者",
"Device_TableHead_ParentRelType": "关系类型",
"Device_TableHead_Parent_MAC": "父网络节点",
"Device_TableHead_ParentRelType": "关系",
"Device_TableHead_Parent_MAC": "父节点",
"Device_TableHead_Port": "端口",
"Device_TableHead_PresentLastScan": "检测",
"Device_TableHead_ReqNicsOnline": "需要网卡在线",
@@ -344,6 +346,7 @@
"Gen_LockedDB": "错误 - DB 可能被锁定 - 检查 F12 开发工具 -> 控制台或稍后重试。",
"Gen_NetworkMask": "网络掩码",
"Gen_New": "",
"Gen_No_Data": "",
"Gen_Offline": "离线",
"Gen_Okay": "Ok",
"Gen_Online": "在线",
@@ -404,7 +407,7 @@
"Maintenance_InitCheck": "初步检查",
"Maintenance_InitCheck_Checking": "查看中…",
"Maintenance_InitCheck_QuickSetupGuide": "确保您遵循<a href=\"https://docs.netalertx.com/INITIAL_SETUP/\" target=\"_blank\">快速设置指南</a>。",
"Maintenance_InitCheck_Success": "应用程序启动成功!",
"Maintenance_InitCheck_Success": "应用程序初始化成功!",
"Maintenance_ReCheck": "重试检查",
"Maintenance_Running_Version": "安装版本",
"Maintenance_Status": "状态",

View File

@@ -8,7 +8,7 @@
"mapped_to_table": "CurrentScan",
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -94,7 +94,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []
@@ -341,7 +341,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true" }],
"transformers": []
}
]
@@ -372,7 +372,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true" }],
"transformers": []
}
]
@@ -403,7 +403,7 @@
],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -418,7 +418,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "scanMac",
"css_classes": "col-sm-3",
"show": true,
@@ -434,7 +434,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"mapped_to_column": "scanLastIP",
"css_classes": "col-sm-2",
"show": true,
@@ -450,7 +450,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"mapped_to_column": "scanName",
"css_classes": "col-sm-2",
"show": true,
@@ -466,7 +466,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"mapped_to_column": "scanVendor",
"css_classes": "col-sm-2",
"show": true,
@@ -482,7 +482,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"mapped_to_column": "scanType",
"css_classes": "col-sm-2",
"show": true,
@@ -498,7 +498,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -532,7 +532,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -547,7 +547,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -562,7 +562,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": true,
"type": "replace",

View File

@@ -50,7 +50,7 @@ def main():
# make sure the below mapping is mapped in config.json, for example:
# "database_column_definitions": [
# {
# "column": "Object_PrimaryID", <--------- the value I save into primaryId
# "column": "objectPrimaryId", <--------- the value I save into primaryId
# "mapped_to_column": "scanMac", <--------- gets inserted into the CurrentScan DB
# table column scanMac
#

View File

@@ -31,7 +31,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -46,7 +46,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -65,7 +65,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "url",
@@ -80,7 +80,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -99,7 +99,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-3",
"show": true,
"type": "label",
@@ -114,7 +114,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -133,7 +133,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -153,7 +153,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-8",
"show": true,
"type": "textarea_readonly",
@@ -168,7 +168,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -187,7 +187,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -206,7 +206,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -225,7 +225,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -261,7 +261,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -31,7 +31,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -46,7 +46,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -65,7 +65,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "url",
@@ -80,7 +80,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -99,7 +99,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -114,7 +114,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -133,7 +133,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -153,7 +153,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-8",
"show": true,
"type": "textarea_readonly",
@@ -168,7 +168,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -187,7 +187,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -206,7 +206,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -225,7 +225,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -261,7 +261,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -7,7 +7,7 @@
"show_ui": true,
"data_filters": [
{
"compare_column": "Watched_Value4",
"compare_column": "watchedValue4",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -47,7 +47,7 @@
],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -62,7 +62,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -81,7 +81,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -96,7 +96,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -111,7 +111,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -126,7 +126,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -145,7 +145,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-3",
"show": false,
"type": "label",
@@ -160,7 +160,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -175,7 +175,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -190,7 +190,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": true,
"type": "device_name_mac",
@@ -205,7 +205,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -224,7 +224,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": true,
"type": "replace",
@@ -260,7 +260,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",
@@ -380,7 +380,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []

View File

@@ -3,7 +3,6 @@
import json
import os
import sys
from datetime import datetime
import time
import re
import paho.mqtt.client as mqtt
@@ -26,7 +25,7 @@ from logger import mylog, Logger # noqa: E402 [flake8 lint suppression]
from helper import get_setting_value, bytes_to_string, \
sanitize_string, normalize_string # noqa: E402 [flake8 lint suppression]
from database import DB, get_device_stats # noqa: E402 [flake8 lint suppression]
from utils.datetime_utils import timeNowUTC # noqa: E402 [flake8 lint suppression]
from utils.datetime_utils import timeNowUTC, format_date_iso # noqa: E402 [flake8 lint suppression]
from models.notification_instance import NotificationInstance # noqa: E402 [flake8 lint suppression]
# Make sure the TIMEZONE for logging is correct
@@ -212,14 +211,14 @@ class sensor_config:
already known. If not, it marks the sensor as new and logs relevant information.
"""
# Retrieve the plugin object based on the sensor's hash
plugObj = getPluginObject({"Plugin": "MQTT", "Watched_Value3": self.hash})
plugObj = getPluginObject({"plugin": "MQTT", "watchedValue3": self.hash})
# Check if the plugin object is new
if not plugObj:
self.isNew = True
mylog('verbose', [f"[{pluginName}] New sensor entry (name|mac|hash) : ({self.deviceName}|{self.mac}|{self.hash}"])
else:
device_name = plugObj.get("Watched_Value1", "Unknown")
device_name = plugObj.get("watchedValue1", "Unknown")
mylog('verbose', [f"[{pluginName}] Existing, skip Device Name: {device_name}"])
self.isNew = False
@@ -504,8 +503,8 @@ def mqtt_start(db):
"vendor": sanitize_string(device["devVendor"]),
"mac_address": str(device["devMac"]),
"model": devDisplayName,
"last_connection": prepTimeStamp(str(device["devLastConnection"])),
"first_connection": prepTimeStamp(str(device["devFirstConnection"])),
"last_connection": format_date_iso(str(device["devLastConnection"])),
"first_connection": format_date_iso(str(device["devFirstConnection"])),
"sync_node": device["devSyncHubNode"],
"group": device["devGroup"],
"location": device["devLocation"],
@@ -617,26 +616,6 @@ def to_binary_sensor(input):
return "OFF"
# -------------------------------------
# Convert to format that is interpretable by Home Assistant
def prepTimeStamp(datetime_str):
try:
# Attempt to parse the input string to ensure it's a valid datetime
parsed_datetime = datetime.fromisoformat(datetime_str)
# If the parsed datetime is naive (i.e., does not contain timezone info), add UTC timezone
if parsed_datetime.tzinfo is None:
parsed_datetime = conf.tz.localize(parsed_datetime)
except ValueError:
mylog('verbose', [f"[{pluginName}] Timestamp conversion failed of string '{datetime_str}'"])
# Use the current time if the input format is invalid
parsed_datetime = timeNowUTC(as_string=False)
# Convert to the required format with 'T' between date and time and ensure the timezone is included
return parsed_datetime.isoformat() # This will include the timezone offset
# -------------INIT---------------------
if __name__ == '__main__':
sys.exit(main())

View File

@@ -31,7 +31,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -46,7 +46,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -65,7 +65,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -80,7 +80,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -95,7 +95,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -115,7 +115,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-2",
"show": true,
"type": "textarea_readonly",
@@ -130,7 +130,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -145,7 +145,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "device_mac",
@@ -160,7 +160,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -179,7 +179,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -215,7 +215,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -31,7 +31,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -46,7 +46,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -65,7 +65,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -80,7 +80,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -95,7 +95,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -115,7 +115,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-2",
"show": true,
"type": "textarea_readonly",
@@ -130,7 +130,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -145,7 +145,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "device_mac",
@@ -160,7 +160,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -179,7 +179,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -215,7 +215,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -31,7 +31,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -46,7 +46,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -65,7 +65,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -80,7 +80,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -95,7 +95,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -115,7 +115,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-2",
"show": true,
"type": "textarea_readonly",
@@ -130,7 +130,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -145,7 +145,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "device_mac",
@@ -160,7 +160,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -179,7 +179,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -215,7 +215,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -27,7 +27,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -42,7 +42,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -61,7 +61,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "url",
@@ -76,7 +76,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -95,7 +95,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -110,7 +110,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -129,7 +129,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -149,7 +149,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-8",
"show": true,
"type": "textarea_readonly",
@@ -164,7 +164,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -183,7 +183,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -202,7 +202,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -221,7 +221,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -257,7 +257,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -31,7 +31,7 @@
"params": [],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -46,7 +46,7 @@
]
},
{
"column": "Plugin",
"column": "plugin",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -65,7 +65,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -80,7 +80,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -95,7 +95,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
@@ -115,7 +115,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-3",
"show": true,
"type": "textarea_readonly",
@@ -130,7 +130,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-3",
"show": true,
"type": "textarea_readonly",
@@ -145,7 +145,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "device_mac",
@@ -160,7 +160,7 @@
]
},
{
"column": "UserData",
"column": "userData",
"css_classes": "col-sm-2",
"show": false,
"type": "textbox_save",
@@ -179,7 +179,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": false,
"type": "replace",
@@ -215,7 +215,7 @@
]
},
{
"column": "Extra",
"column": "extra",
"css_classes": "col-sm-3",
"show": false,
"type": "label",

View File

@@ -8,7 +8,7 @@
"mapped_to_table": "CurrentScan",
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -94,7 +94,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []
@@ -315,7 +315,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true" }],
"transformers": []
}
]
@@ -348,7 +348,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true" }],
"transformers": []
}
]
@@ -378,7 +378,7 @@
],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -393,7 +393,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "scanMac",
"css_classes": "col-sm-3",
"show": true,
@@ -409,7 +409,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"mapped_to_column": "scanLastIP",
"css_classes": "col-sm-2",
"show": true,
@@ -425,7 +425,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"mapped_to_column": "scanName",
"css_classes": "col-sm-2",
"show": true,
@@ -441,7 +441,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"mapped_to_column": "scanType",
"css_classes": "col-sm-2",
"show": true,
@@ -457,7 +457,7 @@
]
},
{
"column": "Watched_Value3",
"column": "watchedValue3",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -472,7 +472,7 @@
]
},
{
"column": "Watched_Value4",
"column": "watchedValue4",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -506,7 +506,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -521,7 +521,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -536,7 +536,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": true,
"type": "replace",

View File

@@ -8,7 +8,7 @@
"mapped_to_table": "CurrentScan",
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -228,7 +228,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []
@@ -274,7 +274,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true"}],
"elementOptions": [{ "multiple": "true", "orderable": "true"}],
"transformers": []
}
]
@@ -305,7 +305,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true" }],
"transformers": []
}
]
@@ -338,17 +338,17 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true"}],
"transformers": []
}
]
},
"default_value": ["Watched_Value1", "Watched_Value2"],
"default_value": ["watchedValue1", "watchedValue2"],
"options": [
"Watched_Value1",
"Watched_Value2",
"Watched_Value3",
"Watched_Value4"
"watchedValue1",
"watchedValue2",
"watchedValue3",
"watchedValue4"
],
"localized": ["name", "description"],
"name": [
@@ -368,15 +368,15 @@
"description": [
{
"language_code": "en_us",
"string": "Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is IP</li><li><code>Watched_Value2</code> is Vendor</li><li><code>Watched_Value3</code> is Interface </li><li><code>Watched_Value4</code> is N/A </li></ul>"
"string": "Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>watchedValue1</code> is IP</li><li><code>watchedValue2</code> is Vendor</li><li><code>watchedValue3</code> is Interface </li><li><code>watchedValue4</code> is N/A </li></ul>"
},
{
"language_code": "es_es",
"string": "Envía una notificación si los valores seleccionados cambian. Utilice <code>CTRL + clic</code> para seleccionar/deseleccionar. <ul> <li><code>Valor_observado1</code> es IP</li><li><code>Valor_observado2</code> es Proveedor</li><li><code>Valor_observado3</code> es Interfaz </li><li><code>Valor_observado4</code> es N/A </li></ul>"
"string": "Envía una notificación si los valores seleccionados cambian. Utilice <code>CTRL + clic</code> para seleccionar/deseleccionar. <ul> <li><code>watchedValue1</code> es IP</li><li><code>watchedValue2</code> es Proveedor</li><li><code>watchedValue3</code> es Interfaz </li><li><code>watchedValue4</code> es N/A </li></ul>"
},
{
"language_code": "de_de",
"string": "Sende eine Benachrichtigung, wenn ein ausgwählter Wert sich ändert. <code>STRG + klicken</code> zum aus-/abwählen. <ul> <li><code>Watched_Value1</code> ist die IP</li><li><code>Watched_Value2</code> ist der Hersteller</li><li><code>Watched_Value3</code> ist das Interface </li><li><code>Watched_Value4</code> ist nicht in Verwendung </li></ul>"
"string": "Sende eine Benachrichtigung, wenn ein ausgwählter Wert sich ändert. <code>STRG + klicken</code> zum aus-/abwählen. <ul> <li><code>watchedValue1</code> ist die IP</li><li><code>watchedValue2</code> ist der Hersteller</li><li><code>watchedValue3</code> ist das Interface </li><li><code>watchedValue4</code> ist nicht in Verwendung </li></ul>"
}
]
},
@@ -387,7 +387,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true"}],
"transformers": []
}
]
@@ -484,7 +484,7 @@
],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -499,7 +499,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"mapped_to_column": "scanMac",
"css_classes": "col-sm-3",
"show": true,
@@ -515,7 +515,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"mapped_to_column": "scanLastIP",
"css_classes": "col-sm-2",
"show": true,
@@ -531,7 +531,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"mapped_to_column": "scanVendor",
"css_classes": "col-sm-2",
"show": true,
@@ -582,7 +582,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -605,7 +605,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -628,7 +628,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": true,
"type": "replace",

View File

@@ -9,7 +9,7 @@
"mapped_to_table": "CurrentScan",
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -103,7 +103,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []
@@ -136,7 +136,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true"}],
"elementOptions": [{ "multiple": "true", "orderable": "true"}],
"transformers": []
}
]
@@ -169,7 +169,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true"}],
"elementOptions": [{ "multiple": "true", "orderable": "true"}],
"transformers": []
}
]
@@ -431,7 +431,7 @@
],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -448,7 +448,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"default_value": "",
"localized": [
@@ -474,7 +474,7 @@
"type": "device_mac"
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"default_value": "",
"localized": [
@@ -500,7 +500,7 @@
"type": "device_ip"
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-2",
"default_value": "",
"localized": [
@@ -526,7 +526,7 @@
"type": "label"
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"mapped_to_column": "scanVendor",
"css_classes": "col-sm-2",
"default_value": "",
@@ -573,7 +573,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -590,7 +590,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -607,7 +607,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": true,
"type": "replace",

View File

@@ -8,7 +8,7 @@
"show_ui": true,
"data_filters": [
{
"compare_column": "Object_PrimaryID",
"compare_column": "objectPrimaryId",
"compare_operator": "==",
"compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()",
@@ -151,7 +151,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []
@@ -233,7 +233,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true"}],
"elementOptions": [{ "multiple": "true", "orderable": "true"}],
"transformers": []
}
]
@@ -264,7 +264,7 @@
"elements": [
{
"elementType": "select",
"elementOptions": [{ "multiple": "true", "ordeable": "true" }],
"elementOptions": [{ "multiple": "true", "orderable": "true" }],
"transformers": []
}
]
@@ -291,7 +291,7 @@
],
"database_column_definitions": [
{
"column": "Index",
"column": "index",
"css_classes": "col-sm-2",
"show": true,
"type": "none",
@@ -306,7 +306,7 @@
]
},
{
"column": "Object_PrimaryID",
"column": "objectPrimaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "device_name_mac",
@@ -325,7 +325,7 @@
]
},
{
"column": "Object_SecondaryID",
"column": "objectSecondaryId",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -344,7 +344,7 @@
]
},
{
"column": "Watched_Value1",
"column": "watchedValue1",
"css_classes": "col-sm-2",
"show": false,
"type": "label",
@@ -359,7 +359,7 @@
]
},
{
"column": "Watched_Value2",
"column": "watchedValue2",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -374,7 +374,7 @@
]
},
{
"column": "DateTimeCreated",
"column": "dateTimeCreated",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -389,7 +389,7 @@
]
},
{
"column": "DateTimeChanged",
"column": "dateTimeChanged",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
@@ -404,7 +404,7 @@
]
},
{
"column": "Status",
"column": "status",
"css_classes": "col-sm-1",
"show": true,
"type": "replace",

View File

@@ -188,7 +188,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []

View File

@@ -128,7 +128,7 @@
"focusout": "validateRegex(this)"
},
{
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldK3xcKi9bMC05XSspKVxzKyg/OlwqfCg/OlsxLTldfFsxMl1bMC05XXwzWzAxXXxbMC05XSstWzAtOV0rfFwqL1swLTldKykpXHMrKD86XCp8KD86WzEtOV18MVswLTJdfFswLTldKy1bMC05XSt8XCovWzAtOV0rKSlccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XXxcKi9bMC05XSspKSQ="
"base64Regex": "Xig/OlwqfCg/OlswLTldfFsxLTVdWzAtOV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC05XXxbMS01XVswLTldfFswLTldKy1bMC05XSsoPzovWzAtOV0rKT98XCovWzAtOV0rKSkqXHMrKD86XCp8KD86WzAtOV18MVswLTldfDJbMC0zXXxbMC05XSstWzAtOV0rKD86L1swLTldKyk/fFwqL1swLTldKykpKD86LCg/OlswLTldfDFbMC05XXwyWzAtM118WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXxbMTJdWzAtOV18M1swMV18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMS05XXwxWzAtMl18WzAtOV0rLVswLTldKyg/Oi9bMC05XSspP3xcKi9bMC05XSspKSpccysoPzpcKnwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSg/OiwoPzpbMC02XXxbMC02XS1bMC02XSg/Oi9bMC05XSspP3xcKi9bMC05XSspKSok"
}
],
"transformers": []

View File

@@ -82,16 +82,16 @@ def cleanup_database(
# Cleanup Online History
mylog("verbose", [f"[{pluginName}] Online_History: Delete all but keep latest 150 entries"])
cursor.execute(
"""DELETE from Online_History where "Index" not in (
SELECT "Index" from Online_History
order by Scan_Date desc limit 150)"""
"""DELETE from Online_History where "index" not in (
SELECT "index" from Online_History
order by scanDate desc limit 150)"""
)
mylog("verbose", [f"[{pluginName}] Online_History deleted rows: {cursor.rowcount}"])
# -----------------------------------------------------
# Cleanup Events
mylog("verbose", f"[{pluginName}] Events: Delete all older than {str(DAYS_TO_KEEP_EVENTS)} days (DAYS_TO_KEEP_EVENTS setting)")
sql = f"""DELETE FROM Events WHERE eve_DateTime <= date('now', '-{str(DAYS_TO_KEEP_EVENTS)} day')"""
sql = f"""DELETE FROM Events WHERE eveDateTime <= date('now', '-{str(DAYS_TO_KEEP_EVENTS)} day')"""
mylog("verbose", [f"[{pluginName}] SQL : {sql}"])
cursor.execute(sql)
mylog("verbose", [f"[{pluginName}] Events deleted rows: {cursor.rowcount}"])
@@ -100,7 +100,7 @@ def cleanup_database(
# Sessions (derived snapshot — trimmed to the same window as Events so the
# two tables stay in sync without introducing a separate setting)
mylog("verbose", f"[{pluginName}] Sessions: Delete all older than {str(DAYS_TO_KEEP_EVENTS)} days (reuses DAYS_TO_KEEP_EVENTS)")
sql = f"""DELETE FROM Sessions WHERE ses_DateTimeConnection <= date('now', '-{str(DAYS_TO_KEEP_EVENTS)} day')"""
sql = f"""DELETE FROM Sessions WHERE sesDateTimeConnection <= date('now', '-{str(DAYS_TO_KEEP_EVENTS)} day')"""
mylog("verbose", [f"[{pluginName}] SQL : {sql}"])
cursor.execute(sql)
mylog("verbose", [f"[{pluginName}] Sessions deleted rows: {cursor.rowcount}"])
@@ -113,7 +113,7 @@ def cleanup_database(
SELECT "Index"
FROM (
SELECT "Index",
ROW_NUMBER() OVER(PARTITION BY "Plugin" ORDER BY DateTimeChanged DESC) AS row_num
ROW_NUMBER() OVER(PARTITION BY plugin ORDER BY dateTimeChanged DESC) AS row_num
FROM Plugins_History
) AS ranked_objects
WHERE row_num <= {str(PLUGINS_KEEP_HIST)}
@@ -130,7 +130,7 @@ def cleanup_database(
SELECT "Index"
FROM (
SELECT "Index",
ROW_NUMBER() OVER(PARTITION BY "Notifications" ORDER BY DateTimeCreated DESC) AS row_num
ROW_NUMBER() OVER(PARTITION BY "index" ORDER BY dateTimeCreated DESC) AS row_num
FROM Notifications
) AS ranked_objects
WHERE row_num <= {histCount}
@@ -142,16 +142,15 @@ def cleanup_database(
# AppEvents
histCount = get_setting_value("WORKFLOWS_AppEvents_hist")
mylog("verbose", [f"[{pluginName}] Trim AppEvents to less than {histCount}"])
delete_query = f"""DELETE FROM AppEvents
WHERE "Index" NOT IN (
SELECT "Index"
FROM (
SELECT "Index",
ROW_NUMBER() OVER(PARTITION BY "AppEvents" ORDER BY DateTimeCreated DESC) AS row_num
FROM AppEvents
) AS ranked_objects
WHERE row_num <= {histCount}
);"""
delete_query = f"""
DELETE FROM AppEvents
WHERE "Index" < (
SELECT "Index"
FROM AppEvents
ORDER BY dateTimeCreated DESC
LIMIT 1 OFFSET {histCount}
);
"""
cursor.execute(delete_query)
mylog("verbose", [f"[{pluginName}] AppEvents deleted rows: {cursor.rowcount}"])
@@ -192,10 +191,10 @@ def cleanup_database(
DELETE FROM Plugins_Objects
WHERE rowid > (
SELECT MIN(rowid) FROM Plugins_Objects p2
WHERE Plugins_Objects.Plugin = p2.Plugin
AND Plugins_Objects.Object_PrimaryID = p2.Object_PrimaryID
AND Plugins_Objects.Object_SecondaryID = p2.Object_SecondaryID
AND Plugins_Objects.UserData = p2.UserData
WHERE Plugins_Objects.plugin = p2.plugin
AND Plugins_Objects.objectPrimaryId = p2.objectPrimaryId
AND Plugins_Objects.objectSecondaryId = p2.objectSecondaryId
AND Plugins_Objects.userData = p2.userData
)
"""
)

Some files were not shown because too many files have changed in this diff Show More