From 3250dba9b4303c5096a7f0c87844cecdc210de90 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Fri, 18 Oct 2024 16:13:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=20Puff=20?= =?UTF-8?q?=E5=9F=9F=E5=90=8D=E7=9B=91=E6=B5=8B=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/puff/0.2.2/data.yml | 17 +++++++++++++++++ apps/puff/0.2.2/docker-compose.yml | 20 ++++++++++++++++++++ apps/puff/0.2.2/scripts/init.sh | 15 +++++++++++++++ apps/puff/0.2.2/scripts/uninstall.sh | 10 ++++++++++ apps/puff/0.2.2/scripts/upgrade.sh | 15 +++++++++++++++ apps/puff/README.md | 22 ++++++++++++++++++++++ apps/puff/data.yml | 15 +++++++++++++++ apps/puff/logo.png | Bin 0 -> 21227 bytes 10 files changed, 116 insertions(+) create mode 100644 apps/puff/0.2.2/data.yml create mode 100644 apps/puff/0.2.2/docker-compose.yml create mode 100644 apps/puff/0.2.2/scripts/init.sh create mode 100644 apps/puff/0.2.2/scripts/uninstall.sh create mode 100644 apps/puff/0.2.2/scripts/upgrade.sh create mode 100644 apps/puff/README.md create mode 100644 apps/puff/data.yml create mode 100644 apps/puff/logo.png diff --git a/.github/README.md b/.github/README.md index e5f2ce240..3e3855faa 100644 --- a/.github/README.md +++ b/.github/README.md @@ -131,6 +131,7 @@ | 🟢 | | Pingvin Share | https://github.com/stonith404/pingvin-share/ | 一个集轻盈与美观于一体的自托管文件共享平台 | | | 🟢 | | PostgreSQL | https://www.postgresql.org/ | 世界上最先进的开源关系数据库 | | | 🟢 | | Prowlarr | https://prowlarr.com/ | 终极索引器管理器 | | +| 🟢 | | Puff | https://github.com/BitAUR/Puff/ | 域名监控程序 | | | 🟢 | | qBittorrent | https://www.qbittorrent.org/ | qBittorrent 比特流客户端 | | | 🟢 | | 青龙 | https://qinglong.online/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | | | 🟢 | | radarr | https://radarr.video/ | 电影组织者/管理员,适用于 Usenet 和 torrent 用户 | | diff --git a/README.md b/README.md index b30834251..69e790b18 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ | 🟢 | | Pingvin Share | https://github.com/stonith404/pingvin-share/ | 一个集轻盈与美观于一体的自托管文件共享平台 | | | 🟢 | | PostgreSQL | https://www.postgresql.org/ | 世界上最先进的开源关系数据库 | | | 🟢 | | Prowlarr | https://prowlarr.com/ | 终极索引器管理器 | | +| 🟢 | | Puff | https://github.com/BitAUR/Puff/ | 域名监控程序 | | | 🟢 | | qBittorrent | https://www.qbittorrent.org/ | qBittorrent 比特流客户端 | | | 🟢 | | 青龙 | https://qinglong.online/ | 【青龙】支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台 | | | 🟢 | | radarr | https://radarr.video/ | 电影组织者/管理员,适用于 Usenet 和 torrent 用户 | | diff --git a/apps/puff/0.2.2/data.yml b/apps/puff/0.2.2/data.yml new file mode 100644 index 000000000..492027b7e --- /dev/null +++ b/apps/puff/0.2.2/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "/home/puff" + edit: true + envKey: PUFF_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number diff --git a/apps/puff/0.2.2/docker-compose.yml b/apps/puff/0.2.2/docker-compose.yml new file mode 100644 index 000000000..1d5317c89 --- /dev/null +++ b/apps/puff/0.2.2/docker-compose.yml @@ -0,0 +1,20 @@ +networks: + 1panel-network: + external: true + +services: + puff: + image: bitaur/puff:v0.2.2 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8080 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${PUFF_ROOT_PATH}/data:/app/data diff --git a/apps/puff/0.2.2/scripts/init.sh b/apps/puff/0.2.2/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/puff/0.2.2/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/puff/0.2.2/scripts/uninstall.sh b/apps/puff/0.2.2/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/puff/0.2.2/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/puff/0.2.2/scripts/upgrade.sh b/apps/puff/0.2.2/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/puff/0.2.2/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/puff/README.md b/apps/puff/README.md new file mode 100644 index 000000000..e74bbfd4b --- /dev/null +++ b/apps/puff/README.md @@ -0,0 +1,22 @@ +# Puff + +域名监控工具 + +![Puff](https://file.lifebus.top/imgs/puff_logo.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) + +## 简介 + +### Puff - 开源的域名监控工具 + +> 2024-09-27 · PROJ · ROYWANG + +昨天早上在群里吹水,关注的一个域名橘子已经回复会删除了,但多久删除没有底,想问问群里的大佬多久会删除,但是问了一圈都不知道,所以萌生了写一个域名监控的想法。 + +目前这个服务呢,仅支持监控域名掉落,不能负责抢注,但抢注更多的不是技术难题,而是别的方面。后续打算增加一个域名动态检测的功能,如果域名过期了、进入赎回期、待删除之类的,都可以提醒一下(已支持)。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) +o diff --git a/apps/puff/data.yml b/apps/puff/data.yml new file mode 100644 index 000000000..7a9221fd5 --- /dev/null +++ b/apps/puff/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: Puff + name: Puff + tags: + - WebSite + - Tool + - Local + shortDescZh: 域名监控程序 + shortDescEn: Domain monitoring program + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/BitAUR/Puff/ + github: https://github.com/BitAUR/Puff/ + document: https://github.com/BitAUR/Puff/ diff --git a/apps/puff/logo.png b/apps/puff/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..78ac01c720c3491b9cad2926929703bb4028ca0b GIT binary patch literal 21227 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 N;Eu`dQk^HS{sX#YZ2ABI literal 0 HcmV?d00001