From 24aed4993bfc23179fff6641142dd894cafcd2e2 Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Mon, 1 Sep 2025 12:18:11 +0800 Subject: [PATCH] feat: add app it-tools fork version --- README.md | 9 ++ apps/it-tools/2025.8.31-13b8f041/data.yml | 19 +++ .../2025.8.31-13b8f041/docker-compose.yml | 14 ++ apps/it-tools/README.md | 132 ++++++++++++++++++ apps/it-tools/README_en.md | 128 +++++++++++++++++ apps/it-tools/data.yml | 31 ++++ apps/it-tools/latest/data.yml | 19 +++ apps/it-tools/latest/docker-compose.yml | 14 ++ apps/it-tools/logo.png | Bin 0 -> 26300 bytes 9 files changed, 366 insertions(+) create mode 100644 apps/it-tools/2025.8.31-13b8f041/data.yml create mode 100644 apps/it-tools/2025.8.31-13b8f041/docker-compose.yml create mode 100644 apps/it-tools/README.md create mode 100644 apps/it-tools/README_en.md create mode 100644 apps/it-tools/data.yml create mode 100644 apps/it-tools/latest/data.yml create mode 100644 apps/it-tools/latest/docker-compose.yml create mode 100644 apps/it-tools/logo.png diff --git a/README.md b/README.md index a3e8550..3d80ded 100644 --- a/README.md +++ b/README.md @@ -971,6 +971,15 @@ AI驱动的开源代码知识库与文档协作平台,支持多模型、多数 + +IT-Tools +
IT-Tools +
+ +🛠️ 为开发人员和IT从业者提供的在线工具集合,支持加密、转换、Web、图像等多类工具 + +2025.8.31-13b8f041 • [官网链接](https://github.com/sharevb/it-tools) + diff --git a/apps/it-tools/2025.8.31-13b8f041/data.yml b/apps/it-tools/2025.8.31-13b8f041/data.yml new file mode 100644 index 0000000..1e2ed86 --- /dev/null +++ b/apps/it-tools/2025.8.31-13b8f041/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: 40116 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + label: + en: Port + ja: ポート + ms: Port + pt-br: Porta + ru: Порт + ko: 포트 + zh-Hant: 埠 + zh: 端口 diff --git a/apps/it-tools/2025.8.31-13b8f041/docker-compose.yml b/apps/it-tools/2025.8.31-13b8f041/docker-compose.yml new file mode 100644 index 0000000..61d7dc7 --- /dev/null +++ b/apps/it-tools/2025.8.31-13b8f041/docker-compose.yml @@ -0,0 +1,14 @@ +services: + it-tools: + image: sharevb/it-tools:2025.8.31-13b8f041 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8080 + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true diff --git a/apps/it-tools/README.md b/apps/it-tools/README.md new file mode 100644 index 0000000..c7f9327 --- /dev/null +++ b/apps/it-tools/README.md @@ -0,0 +1,132 @@ +# IT-Tools Fork版 + +**IT-Tools** 是为开发人员和IT从业者提供的便捷在线工具集合,具有出色的用户体验。这是一个增强版本,包含了原版IT-Tools的所有功能以及社区贡献的额外工具。 + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/IT-Tools.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## 说明 + +此版本为IT-Tools Fork版, 由于原版基本不更新了,所以使用Fork版本体验新功能,需要使用原版可以用1Panel官方应用。 + +## 主要特色 + +- 🚀 **现代化界面**:采用现代化设计,提供良好的用户体验 +- 🛠️ **丰富工具集**:涵盖开发、运维、安全等多个领域的实用工具 +- 📱 **响应式设计**:支持桌面和移动设备访问 +- 🌐 **多语言支持**:支持多种语言界面 +- 🔒 **本地运行**:所有工具均在浏览器本地运行,保护数据隐私 +- ⚡ **即时可用**:无需注册或安装,打开即用 + +## 工具分类 + +### 🔐 加密工具 (Crypto) +- 令牌生成器 +- 哈希文本工具 +- UUID 生成器 +- 文本加密/解密 +- 密码生成器 +- BCrypt 工具 +- 密钥生成器 +- PGP 密钥工具 +- RSA 密钥生成器 + +### 🔄 转换工具 (Converter) +- YAML 转换器 +- JSON 转换器/格式化器 +- Base64 编码/解码 +- URL 编码/解码 +- HTML 编码/解码 +- Markdown 转换器 +- 颜色转换器 +- 二进制/十六进制转换 +- 时间戳转换器 +- SQL 转换器 +- XML 转换器 +- CSV 转换器 + +### 🌐 Web 工具 +- URL 解析器 +- 用户代理解析器 +- HTTP 状态码查询 +- MIME 类型查询 +- HTML 标签剥离器 +- HTML 实体编码/解码 +- URL 重定向检查器 +- SSL 证书分析器 +- DNS 查询工具 +- WhatsApp 链接生成器 +- WiFi 二维码生成器 +- 设备信息检测 +- 浏览器特性检测 +- OG Meta 生成器 +- 二维码生成器 + +### 🖼️ 图片和视频工具 +- SVG 占位符生成器 +- 二维码生成器 +- 二维码读取器 +- 图片格式转换 +- 图片压缩工具 + +### 💻 开发工具 (Development) +- Docker Compose 转换器 +- Cron 表达式生成器 +- SQL 格式化器 +- JSON 差异比较 +- 正则表达式测试器 +- 条形码生成器 +- ASCII 文本绘制器 +- Lorem Ipsum 生成器 +- Git 备忘单 +- 终端命令生成器 + +### 🌐 网络工具 (Network) +- IP 地址查询 +- 端口扫描器 +- Ping 工具 +- MAC 地址查询 +- 子网计算器 +- Whois 查询 + +### 📊 数学工具 (Math) +- 百分比计算器 +- 数学表达式求值器 +- 随机数生成器 +- 数字基数转换 + +### 📏 测量工具 (Measurement) +- 单位转换器 +- 时区转换器 +- 年龄计算器 +- 日期计算器 + +### 📝 文本工具 +- 文本差异比较 +- 文本统计 +- 大小写转换 +- 文本排序 +- 重复行移除 +- 字符串操作工具 + +## 安全说明 + +- 🔒 所有工具均在浏览器本地运行,数据不会上传到服务器 +- 🛡️ 支持 HTTPS 访问,确保数据传输安全 +- 🔐 敏感工具(如PGP加密)依赖WebCrypto API,需要HTTPS环境 + +## 技术特性 + +- 基于现代 Web 技术构建 +- 支持 PWA (Progressive Web App) +- 可自定义工具过滤和首页内容 +- 支持运行时配置默认参数 +- 支持多种部署方式 + +## 部署建议 + +- 建议使用 HTTPS 部署以获得完整功能 +- 可通过反向代理配置认证 +- 支持子目录部署 +- 推荐启用 IPv6 支持 \ No newline at end of file diff --git a/apps/it-tools/README_en.md b/apps/it-tools/README_en.md new file mode 100644 index 0000000..61dd24e --- /dev/null +++ b/apps/it-tools/README_en.md @@ -0,0 +1,128 @@ +# IT-Tools + +**IT-Tools** is a convenient collection of online tools for developers and IT professionals, with great user experience. This is an enhanced version that includes all the features of the original IT-Tools plus additional tools contributed by the community. + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/IT-Tools.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## Key Features + +- 🚀 **Modern Interface**: Modern design with excellent user experience +- 🛠️ **Rich Tool Collection**: Practical tools covering development, operations, security and more +- 📱 **Responsive Design**: Support for desktop and mobile device access +- 🌐 **Multi-language Support**: Support for multiple language interfaces +- 🔒 **Local Execution**: All tools run locally in the browser, protecting data privacy +- ⚡ **Ready to Use**: No registration or installation required, ready to use immediately + +## Tool Categories + +### 🔐 Crypto Tools +- Token Generator +- Hash Text Tool +- UUID Generator +- Text Encryption/Decryption +- Password Generator +- BCrypt Tool +- Key Generator +- PGP Key Tool +- RSA Key Generator + +### 🔄 Converter Tools +- YAML Converter +- JSON Converter/Formatter +- Base64 Encoder/Decoder +- URL Encoder/Decoder +- HTML Encoder/Decoder +- Markdown Converter +- Color Converter +- Binary/Hexadecimal Converter +- Timestamp Converter +- SQL Converter +- XML Converter +- CSV Converter + +### 🌐 Web Tools +- URL Parser +- User Agent Parser +- HTTP Status Code Lookup +- MIME Type Lookup +- HTML Tag Stripper +- HTML Entity Encoder/Decoder +- URL Redirect Checker +- SSL Certificate Analyzer +- DNS Query Tool +- WhatsApp Link Generator +- WiFi QR Code Generator +- Device Information Detection +- Browser Feature Detection +- OG Meta Generator +- QR Code Generator + +### 🖼️ Image and Video Tools +- SVG Placeholder Generator +- QR Code Generator +- QR Code Reader +- Image Format Converter +- Image Compression Tool + +### 💻 Development Tools +- Docker Compose Converter +- Cron Expression Generator +- SQL Formatter +- JSON Diff Comparator +- Regular Expression Tester +- Barcode Generator +- ASCII Text Drawer +- Lorem Ipsum Generator +- Git Cheat Sheet +- Terminal Command Generator + +### 🌐 Network Tools +- IP Address Lookup +- Port Scanner +- Ping Tool +- MAC Address Lookup +- Subnet Calculator +- Whois Query + +### 📊 Math Tools +- Percentage Calculator +- Math Expression Evaluator +- Random Number Generator +- Number Base Converter + +### 📏 Measurement Tools +- Unit Converter +- Timezone Converter +- Age Calculator +- Date Calculator + +### 📝 Text Tools +- Text Diff Comparator +- Text Statistics +- Case Converter +- Text Sorter +- Duplicate Line Remover +- String Manipulation Tools + +## Security Notes + +- 🔒 All tools run locally in the browser, data is not uploaded to servers +- 🛡️ HTTPS access supported to ensure secure data transmission +- 🔐 Sensitive tools (like PGP encryption) rely on WebCrypto API and require HTTPS environment + +## Technical Features + +- Built with modern web technologies +- PWA (Progressive Web App) support +- Customizable tool filtering and home page content +- Runtime configuration of default parameters +- Multiple deployment options + +## Deployment Recommendations + +- HTTPS deployment recommended for full functionality +- Authentication can be configured via reverse proxy +- Subdirectory deployment supported +- IPv6 support recommended \ No newline at end of file diff --git a/apps/it-tools/data.yml b/apps/it-tools/data.yml new file mode 100644 index 0000000..8693d16 --- /dev/null +++ b/apps/it-tools/data.yml @@ -0,0 +1,31 @@ +name: IT-Tools +tags: + - 开发工具 +title: IT-Tools Fork版,为开发人员提供方便的在线工具集合,具有出色的用户体验 +description: IT-Tools Fork版,为开发人员提供方便的在线工具集合,具有出色的用户体验 +additionalProperties: + key: it-tools + name: IT-Tools + tags: + - DevTool + shortDescZh: IT-Tools Fork版,为开发人员提供方便的在线工具集合,具有出色的用户体验 + shortDescEn: T-Tools Fork Collection of handy online tools for developers, with great UX + description: + en: Collection of handy online tools for developers, with great UX + ja: 開発者のための便利なオンラインツール集、優れたUX付き + ms: Koleksi alat dalam talian yang berguna untuk pembangun, dengan UX yang hebat + pt-br: Coleção de ferramentas online úteis para desenvolvedores, com ótima UX + ru: Набор удобных онлайн-инструментов для разработчиков с отличным UX + ko: 개발자를 위한 편리한 온라인 도구 모음, 훌륭한 UX 제공 + zh-Hant: 開發者使用的便捷在線工具集合,具有出色的用戶體驗 + zh: 开发者使用的便捷在线工具集合,具有出色的用户体验 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://sharevb.github.io/it-tools/ + github: https://github.com/sharevb/it-tools + document: https://github.com/sharevb/it-tools + architectures: + - amd64 + - arm64 \ No newline at end of file diff --git a/apps/it-tools/latest/data.yml b/apps/it-tools/latest/data.yml new file mode 100644 index 0000000..1e2ed86 --- /dev/null +++ b/apps/it-tools/latest/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: 40116 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + label: + en: Port + ja: ポート + ms: Port + pt-br: Porta + ru: Порт + ko: 포트 + zh-Hant: 埠 + zh: 端口 diff --git a/apps/it-tools/latest/docker-compose.yml b/apps/it-tools/latest/docker-compose.yml new file mode 100644 index 0000000..4dfa482 --- /dev/null +++ b/apps/it-tools/latest/docker-compose.yml @@ -0,0 +1,14 @@ +services: + it-tools: + image: sharevb/it-tools:latest + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8080 + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true diff --git a/apps/it-tools/logo.png b/apps/it-tools/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..17df08f5d051dfe65b3e442725f13cecdc28153d GIT binary patch literal 26300 zcmYhj2{@GR7dQTl!H}J@#8|T=yRRj?D2yzLkUd2qOGb9ak|nZb%`OuyLPCvgq)23$ z$`XSpj4k`ly!Z6`zwhCR4uTe(AxJG3 zg1CGOa91?I2edbg4fG*0<*THn;xTwa?`vr54?&22%0F1#6!_xrmshW?_<5 zT6Rc!3qiL;jP!LagMKa(1H*p&*(0y*1VozBj=^rG6>ta!WbRi3J}3^g8#(hySufU%Yv< z!2fmsyP{MB0jtntw>afY5VihWmvX|>z-s35tAE-Po z)}qq6pTS`djZN-#d}mr+IgXsTs8da22XAi2^Ex-Tm#EM+bUYeq^TECFL()kd?OCE) zkVXgz?D5NzXE!r?Ohw^ba8(|R2=TwLw=wOJw634%ZjxJ{zX^GXPPafIAgqQ^b;vdk z=d3?>c{&;iPfA#3?Z~NFwXf;}^39^BLig&TDj1*Sp@_Nn6`Cdo}&% zH3Kl6=l^xTlvFRIKNr=Kv-bSxOu~E1K&ng>3lhpi#f*;`Pkik>Ow=(jYz(qj`CKqs z>%8Yr5JJ%uQiiozSr+ARF3^VON)o3zmf7x^c{>ce(*->XDiUBQn$s~Os)0IO!VxHu@<^d zK|e;>Bgniel|v($8b?@ctWHJDEaO9Ui_~rwq`yA*JuUZ2Npz*|%~< zss)c4N8BsRHAzCo~}DML41J&= z8HuWrg{-%$k^hD+qm2JipN7Dsdu{w%*<@WNiv8$@g=AuaUpYF)0>u;yBreKPtMx(o z0nXoGaYqXD(w3Wv5)(s07N5OIL;gUl>=fC`v{1`E7-ut}%qN5L&BCt%t(*2fd~7o` z+rp^K=`u<*%deavy4UT|;QyP=!+KV_KXSubva{7i zm|)Ysey23L*k*e+OP?|Px`X8V#Ds``3rVBRB%|lQ3DwU}PA6+2YyQ7R_ejH;7GJnF z^Rq0v^+V`%&i-McDCOl>PFGQ9BL{r0p+wmhDX)lAUNO?&SHfnl(^H1~|F^{UQ<roRxP=N!GcDky6!}>U*kmxZoT>qxQMSk^r14@WN<{+uUFYAf zn{#p*{lDMd*gO#~ECDUCIZ|h{sK1>?DFp5evcOInH&W-Bm@nq`n2pqLd^|UapGmDl zr&>fj6PG%xWRt{|KR(h{@wlCo?WYzs!63+>(~7>H;3Yob�l-8UC#6=HcGgmn-8k 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 literal 0 HcmV?d00001