From 0a99f2642dd1d44c866c50a9deaabc909e2ef0c7 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Thu, 17 Oct 2024 18:20:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=20=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7=E5=B9=B3=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- .github/README.md | 1 + README.md | 1 + apps/watchyourlan/2.0.3/data.yml | 108 +++++++++++++++++++ apps/watchyourlan/2.0.3/docker-compose.yml | 20 ++++ apps/watchyourlan/2.0.3/scripts/init.sh | 15 +++ apps/watchyourlan/2.0.3/scripts/uninstall.sh | 10 ++ apps/watchyourlan/2.0.3/scripts/upgrade.sh | 15 +++ apps/watchyourlan/README.md | 20 ++++ apps/watchyourlan/data.yml | 15 +++ apps/watchyourlan/logo.png | Bin 0 -> 20627 bytes 10 files changed, 205 insertions(+) create mode 100644 apps/watchyourlan/2.0.3/data.yml create mode 100644 apps/watchyourlan/2.0.3/docker-compose.yml create mode 100644 apps/watchyourlan/2.0.3/scripts/init.sh create mode 100644 apps/watchyourlan/2.0.3/scripts/uninstall.sh create mode 100644 apps/watchyourlan/2.0.3/scripts/upgrade.sh create mode 100644 apps/watchyourlan/README.md create mode 100644 apps/watchyourlan/data.yml create mode 100644 apps/watchyourlan/logo.png diff --git a/.github/README.md b/.github/README.md index 906704887..b21ed281c 100644 --- a/.github/README.md +++ b/.github/README.md @@ -148,6 +148,7 @@ | 🟢 | | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | | | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | +| 🟢 | | 路由设备监控 | https://github.com/aceberg/WatchYourLAN/ | 轻量级网络 IP 扫描器 | | | 🟢 | | WiseFlow | https://github.com/TeamWiseFlow/wiseflow/ | Wiseflow 首席情报官 | | | 🟢 | | 悟空IM | https://githubim.com/ | 让信息传递更简单 | | | 🟢 | | 迅雷 NAS版 | https://github.com/cnk3x/xunlei/ | 迅雷远程下载服务 NAS移植版 | | diff --git a/README.md b/README.md index 2f3756902..6a053ab9d 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,7 @@ | 🟢 | | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | | | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | +| 🟢 | | 路由设备监控 | https://github.com/aceberg/WatchYourLAN/ | 轻量级网络 IP 扫描器 | | | 🟢 | | WiseFlow | https://github.com/TeamWiseFlow/wiseflow/ | Wiseflow 首席情报官 | | | 🟢 | | 悟空IM | https://githubim.com/ | 让信息传递更简单 | | | 🟢 | | 迅雷 NAS版 | https://github.com/cnk3x/xunlei/ | 迅雷远程下载服务 NAS移植版 | | diff --git a/apps/watchyourlan/2.0.3/data.yml b/apps/watchyourlan/2.0.3/data.yml new file mode 100644 index 000000000..ab4d657dc --- /dev/null +++ b/apps/watchyourlan/2.0.3/data.yml @@ -0,0 +1,108 @@ +additionalProperties: + formFields: + - default: "/home/watchyourlan" + edit: true + envKey: WATCHYOURLAN_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8840 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: 访问端口 + labelEn: Port + required: true + rule: paramPort + type: number + - default: "sand" + edit: true + envKey: THEME + labelZh: 主题 + labelEn: Theme + required: true + type: select + values: + - label: Sand + value: "sand" + - label: Emerald + value: "emerald" + - label: Grass + value: "grass" + - label: Grayscale + value: "grayscale" + - label: Ocean + value: "ocean" + - label: Wood + value: "wood" + - default: "dark" + edit: true + envKey: COLOR + labelZh: 颜色 + labelEn: Color + required: true + type: select + values: + - label: 浅色 + value: "light" + - label: 深色 + value: "dark" + - default: "" + edit: true + envKey: SHOUTRRR_URL + labelZh: 通知地址 + labelEn: Notification URL + required: false + type: text + - default: "enp2s0" + edit: true + envKey: IFACES + labelZh: 监听网卡 (多个用逗号分隔) + labelEn: Listening network card (separated by commas) + required: true + type: text + - default: 120 + edit: true + envKey: TIMEOUT + labelZh: 超时时间 (秒) + labelEn: Timeout (seconds) + required: true + type: number + - default: 48 + edit: true + envKey: TRIM_HIST + labelZh: 历史记录保留失效 (小时) + labelEn: Historical record retention invalid (hours) + required: true + type: number + - default: "false" + edit: true + envKey: HIST_IN_DB + labelZh: 历史记录存储方式 + labelEn: Historical record storage method + required: true + type: select + values: + - label: 内存存储 + value: "false" + - label: 数据库存储 + value: "true" + - default: "sqlite" + edit: true + envKey: USE_DB + labelZh: 数据存储方式 + labelEn: Data storage method + required: true + type: select + values: + - label: SQLite + value: "sqlite" + - label: PostgreSQL + value: "postgres" + - default: "" + edit: true + envKey: PG_CONNECT + labelZh: PostgreSQL 连接地址 + labelEn: PostgreSQL connection address + required: false + type: text diff --git a/apps/watchyourlan/2.0.3/docker-compose.yml b/apps/watchyourlan/2.0.3/docker-compose.yml new file mode 100644 index 000000000..db6951f69 --- /dev/null +++ b/apps/watchyourlan/2.0.3/docker-compose.yml @@ -0,0 +1,20 @@ +networks: + 1panel-network: + external: true + +services: + watchyourlan: + image: aceberg/watchyourlan:2.0.3 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + network_mode: host + ports: + - ${PANEL_APP_PORT_HTTP}:8840 + volumes: + - ${WATCHYOURLAN_ROOT_PATH}/data:/data/WatchYourLAN + environment: + - HOST=0.0.0.0 + - PORT=8840 + - LOG_LEVEL=info diff --git a/apps/watchyourlan/2.0.3/scripts/init.sh b/apps/watchyourlan/2.0.3/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/watchyourlan/2.0.3/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/watchyourlan/2.0.3/scripts/uninstall.sh b/apps/watchyourlan/2.0.3/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/watchyourlan/2.0.3/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/watchyourlan/2.0.3/scripts/upgrade.sh b/apps/watchyourlan/2.0.3/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/watchyourlan/2.0.3/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/watchyourlan/README.md b/apps/watchyourlan/README.md new file mode 100644 index 000000000..9b0b90cdd --- /dev/null +++ b/apps/watchyourlan/README.md @@ -0,0 +1,20 @@ +# 路由设备监控 + +轻量级网络 IP 扫描器。可用于通知新主机并监控主机在线/离线历史 + +![路由设备监控](https://file.lifebus.top/imgs/kimai_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +轻量级网络 IP 扫描器,带有 Web GUI。特性: Translation: + ++ 发现新主机时发送通知 ++ 监控主机在线/离线历史 ++ 保持网络中所有主机的列表 ++ 将数据发送到 InfluxDB2 以创建 Grafana 仪表板 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/watchyourlan/data.yml b/apps/watchyourlan/data.yml new file mode 100644 index 000000000..26a2837ac --- /dev/null +++ b/apps/watchyourlan/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: watchyourlan + name: 路由设备监控 + tags: + - WebSite + - Middleware + - Local + shortDescZh: 轻量级网络 IP 扫描器 + shortDescEn: Lightweight network IP scanner + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/aceberg/WatchYourLAN/ + github: https://github.com/aceberg/WatchYourLAN/ + document: https://github.com/aceberg/WatchYourLAN/ diff --git a/apps/watchyourlan/logo.png b/apps/watchyourlan/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2d5ca08d8a0e8e93ce1c65924a6f1f44b62522 GIT binary patch literal 20627 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 tG$=-aEuH`X002ovPDHLkV1m|fE_wg} literal 0 KcmV+b0RR6000031