{"id":34197925,"url":"https://github.com/zy84338719/upftp","last_synced_at":"2026-04-02T18:19:18.664Z","repository":{"id":57580896,"uuid":"362455047","full_name":"zy84338719/upftp","owner":"zy84338719","description":"简单的ftp服务器启动 帮你从服务器上面下载指定东西到本地","archived":false,"fork":false,"pushed_at":"2026-03-29T20:18:51.000Z","size":136174,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T21:26:27.484Z","etag":null,"topics":["ftp","ftp-server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zy84338719.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-28T12:12:59.000Z","updated_at":"2026-03-29T20:16:47.000Z","dependencies_parsed_at":"2024-05-06T20:28:04.009Z","dependency_job_id":"75980e13-07cc-42d3-ac5e-9a3fa4a12046","html_url":"https://github.com/zy84338719/upftp","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/zy84338719/upftp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zy84338719%2Fupftp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zy84338719%2Fupftp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zy84338719%2Fupftp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zy84338719%2Fupftp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zy84338719","download_url":"https://codeload.github.com/zy84338719/upftp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zy84338719%2Fupftp/sbom","scorecard":{"id":1244691,"data":{"date":"2026-03-02","repo":{"name":"github.com/zy84338719/upftp","commit":"b4ceac6caed089b5c3442d375abef82ca39e130b"},"scorecard":{"version":"v5.4.1-0.20260302234127-4dbf14294ff1","commit":"4dbf14294ff1c660e93a2c6b70159f8f9b7e1051"},"score":3.1,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":2,"reason":"2 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/zy84338719/upftp/release.yml/main?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.2.1 not signed: https://api.github.com/repos/zy84338719/upftp/releases/282284007","Warn: release artifact v1.2.0 not signed: https://api.github.com/repos/zy84338719/upftp/releases/282282188","Warn: release artifact v1.1.1 not signed: https://api.github.com/repos/zy84338719/upftp/releases/232746696","Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/zy84338719/upftp/releases/232741414","Warn: release artifact 1.0 not signed: https://api.github.com/repos/zy84338719/upftp/releases/199124593","Warn: release artifact v1.2.1 does not have provenance: https://api.github.com/repos/zy84338719/upftp/releases/282284007","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/zy84338719/upftp/releases/282282188","Warn: release artifact v1.1.1 does not have provenance: https://api.github.com/repos/zy84338719/upftp/releases/232746696","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/zy84338719/upftp/releases/232741414","Warn: release artifact 1.0 does not have provenance: https://api.github.com/repos/zy84338719/upftp/releases/199124593"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/4dbf14294ff1c660e93a2c6b70159f8f9b7e1051/docs/checks.md#branch-protection"}}]},"last_synced_at":"2026-03-10T22:59:57.611Z","repository_id":57580896,"created_at":"2026-03-10T22:59:57.611Z","updated_at":"2026-03-10T22:59:57.611Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31312748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ftp","ftp-server"],"created_at":"2025-12-15T17:54:53.241Z","updated_at":"2026-04-02T18:19:18.654Z","avatar_url":"https://github.com/zy84338719.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/zy84338719/upftp\" alt=\"logo\" \u003e\u003cimg src=\"https://raw.githubusercontent.com/cloudreve/frontend/master/public/static/img/logo192.png\" width=\"150\"/\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  upftp\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch4\u003e一个现代化的跨平台多协议文件共享服务器 | A modern cross-platform multi-protocol file sharing server\u003c/h4\u003e\n  \u003cp\u003e支持 HTTP、FTP、WebDAV、NFS 和 MCP 协议，提供现代化 Web 界面和丰富的文件预览功能\u003c/p\u003e\n  \u003cp\u003eSupports HTTP, FTP, WebDAV, NFS and MCP protocols, with modern web interface and rich file preview capabilities\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/zy84338719/upftp/actions/workflows/build.yml\"\u003e\n    \u003cimg src=\"https://github.com/zy84338719/upftp/actions/workflows/build.yml/badge.svg?branch=main\"\n         alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/zy84338719/upftp\"\u003e\n    \u003cimg src=\"https://goreportcard.com/badge/github.com/zy84338719/upftp?style=flat-square\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zy84338719/upftp/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/zy84338719/upftp?include_prereleases\u0026style=flat-square\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zy84338719/upftp/blob/main/LICENSE.txt\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/zy84338719/upftp?style=flat-square\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zy84338719/upftp/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/zy84338719/upftp?style=flat-square\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zy84338719/upftp/network/members\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/forks/zy84338719/upftp?style=flat-square\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-主要特性\"\u003e特性\u003c/a\u003e •\n  \u003ca href=\"#-截图展示\"\u003e截图\u003c/a\u003e •\n  \u003ca href=\"#-快速开始\"\u003e安装\u003c/a\u003e •\n  \u003ca href=\"#-使用方法\"\u003e使用\u003c/a\u003e •\n  \u003ca href=\"#-常见问题\"\u003eFAQ\u003c/a\u003e •\n  \u003ca href=\"#-贡献\"\u003e贡献\u003c/a\u003e\n\u003c/p\u003e\n\n[English](#english) | [中文](#中文)\n\n---\n\n# 中文\n\n## 📸 截图展示\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"img.png\" alt=\"UPFTP Web Interface\" width=\"80%\"\u003e\n  \u003cp\u003e\u003cem\u003eWeb界面预览\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"img.png\" alt=\"UPFTP Command Line Interface\" width=\"80%\"\u003e\n  \u003cp\u003e\u003cem\u003e命令行界面预览\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## ✨ 主要特性\n\n### 🌐 现代化Web界面\n- 响应式设计，支持移动设备\n- 实时文件搜索功能\n- 直观的文件类型图标\n- 优雅的预览模态框\n- **🌍 多语言支持**: 自动检测浏览器语言，支持中英文切换\n- **🎨 新界面设计**: 页面标题更新为 \"AI-First File Server\"，添加版本徽章和功能展示栏\n- **📱 移动优化**: 改进的移动端响应式设计，添加用于移动访问的 QR 码按钮\n- **📤 上传界面**: 改进的上传部分 UI\n\n### 🎨 智能语言体验\n- **自动语言检测**: 根据浏览器语言自动选择中文或英文界面\n- **手动语言切换**: 一键切换中英文，实时生效无需刷新\n- **语言偏好记忆**: 自动保存用户语言选择，下次访问时自动应用\n- **完整界面翻译**: 所有文本元素均支持中英文显示\n\n### 🎥 丰富的文件预览\n- **图片**: JPG, PNG, GIF, SVG, WebP, BMP, ICO, HEIC, HEIF, AVIF, TIFF 等\n- **视频**: MP4, AVI, MOV, WebM, MKV, M4V, MPEG, 3GP, OGV 等\n- **音频**: MP3, WAV, FLAC, AAC, OGG, M4A, WMA, OPUS, AIFF, APE 等  \n- **文本/代码**: 支持语法高亮的多种编程语言，包括 Vue, Svelte, Dart, Kotlin 等\n- **文档**: PDF可在浏览器预览，Office文档提供下载\n- **容器格式**: Dockerfile, Makefile 等\n\n### 🚀 多协议支持\n- **HTTP服务器**: 现代Web界面，支持浏览器访问\n- **FTP服务器**: 传统FTP协议，支持各种FTP客户端\n- **MCP服务器**: Model Context Protocol，支持AI集成\n- **WebDAV服务器**: 支持WebDAV协议\n- **NFS服务器**: 支持NFS协议\n- 独立端口配置，可单独启用\n\n### 🔧 便捷的管理\n- **交互式命令行界面**: 带有 ASCII 艺术标志横幅和 emoji 图标的改进命令菜单\n- **文件搜索和列表管理**: 改进的文件列表，带有分页（最多 20 项）\n- **下载链接生成**: 增强的下载示例，带有 MCP 集成信息\n- **实时文件系统刷新**\n- **服务器状态**: 新的服务器状态和关于信息屏幕\n- **版本信息**: 版本信息命令（`v` 或 `version`）\n\n### 📝 配置增强\n- **改进的配置文件**: 带有详细注释和使用示例\n- **配置路径跟踪**: 配置路径跟踪和显示\n- **更好的组织**: 更好的部分组织，带有视觉分隔符\n\n### 📊 更好的日志记录\n- **改进的日志格式**: 带有视觉指示器\n- **颜色编码**: 带有项目符号的颜色编码日志级别\n- **信息丰富**: 更多信息丰富的启动消息\n\n### 🔒 安全与配置\n- **路径验证**: 更好的上传路径验证\n- **错误处理**: 增强的错误处理\n\n### 🌍 跨平台支持\n- **Linux**: amd64, arm64\n- **Windows**: amd64, 386  \n- **macOS**: Intel, Apple Silicon\n\n## 🚀 快速开始\n\n### 方式一：包管理器安装（推荐）\n\n#### macOS (Homebrew)\n\n```bash\n# 添加 tap\nbrew tap zy84338719/homebrew-tap\n\n# 安装\nbrew install upftp\n```\n\n#### Windows (Scoop)\n\n```powershell\n# 添加 bucket\nscoop bucket add upftp https://github.com/zy84338719/scoop-bucket\n\n# 安装\nscoop install upftp\n```\n\n### 方式二：直接下载\n\n从 [Releases 页面](https://github.com/zy84338719/upftp/releases) 下载对应平台的预编译二进制：\n\n```bash\n# Linux (amd64)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_linux_amd64.tar.gz\ntar -xzf upftp_linux_amd64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n\n# Linux (arm64)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_linux_arm64.tar.gz\ntar -xzf upftp_linux_arm64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n\n# macOS (Apple Silicon)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_darwin_arm64.tar.gz\ntar -xzf upftp_darwin_arm64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n\n# macOS (Intel)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_darwin_amd64.tar.gz\ntar -xzf upftp_darwin_amd64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n```\n\n### 方式二：编译安装\n\n需要 **Go 1.24+** 环境。\n\n#### macOS\n\n```bash\n# 安装 Go\nbrew install go\n\n# 克隆并编译\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n\n# 安装到系统路径\nsudo cp upftp /usr/local/bin/\n```\n\n#### Ubuntu / Debian\n\n```bash\n# 安装 Go（推荐使用官方版本）\nwget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz\nsudo tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz\nexport PATH=$PATH:/usr/local/go/bin\n\n# 克隆并编译\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n\n# 安装到系统路径\nsudo cp upftp /usr/local/bin/\n```\n\n#### CentOS / RHEL / Fedora\n\n```bash\n# 安装 Go\nwget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz\nsudo tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz\nexport PATH=$PATH:/usr/local/go/bin\n\n# 安装 git（如未安装）\nsudo yum install -y git   # CentOS/RHEL\n# sudo dnf install -y git # Fedora\n\n# 克隆并编译\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n\n# 安装到系统路径\nsudo cp upftp /usr/local/bin/\n```\n\n#### 交叉编译其他平台\n\n```bash\n# 查看所有构建目标\nmake help\n\n# 编译所有平台（Linux/macOS/Windows, amd64/arm64）\nmake build-all\n\n# 编译结果在 dist/ 目录\nls dist/\n```\n\n### 基本使用\n\n```bash\n# 使用默认配置启动\n./upftp\n\n# 指定端口和目录\n./upftp -p 8888 -d /path/to/share\n\n# 启用FTP服务器\n./upftp -enable-ftp -user admin -pass mypassword\n\n# 启用MCP服务器 (AI集成)\n./upftp -enable-mcp\n\n# 自动选择网络接口（适合脚本使用）\n./upftp -auto\n```\n\n### 完整参数\n\n```bash\nupftp [选项]\n\n选项：\n    -p \u003cport\u003e       HTTP服务器端口 (默认: 10000)\n    -ftp \u003cport\u003e     FTP服务器端口 (默认: 2121)\n    -webdav \u003cport\u003e  WebDAV服务器端口 (默认: 8080)\n    -nfs \u003cport\u003e     NFS服务器端口 (默认: 2049)\n    -d \u003cdir\u003e        共享目录 (默认: 当前目录)\n    -auto           自动选择第一个可用网络接口\n    -enable-ftp     启用FTP服务器\n    -enable-webdav  启用WebDAV服务器\n    -enable-nfs     启用NFS服务器\n    -enable-mcp     启用MCP服务器 (AI集成)\n    -user \u003cname\u003e    FTP用户名 (默认: admin)\n    -pass \u003cpass\u003e    FTP密码 (默认: admin)\n    -h              显示帮助信息\n```\n\n### 访问方式\n\n启动后可通过以下方式访问：\n\n1. **Web浏览器**: `http://你的IP:端口`\n2. **FTP客户端**: `ftp://你的IP:FTP端口`  \n3. **WebDAV客户端**: `http://你的IP:WebDAV端口`\n4. **NFS客户端**: `你的IP:/share`\n5. **命令行下载**: `curl -O http://你的IP:端口/download/文件名`\n\n### MCP 集成\n\nupftp 支持 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)，可以让 AI 助手（如 Claude）直接访问和操作共享目录中的文件。\n\n#### 启用 MCP\n\n```bash\n./upftp -enable-mcp -d /path/to/share\n```\n\n#### MCP 工具列表\n\n| 工具名称 | 描述 |\n|---------|------|\n| `list_files` | 列出指定路径下的文件和目录 |\n| `get_file_info` | 获取文件或目录的详细信息 |\n| `read_file` | 读取文本文件内容 |\n| `download_file` | 获取文件的下载链接和 Base64 编码内容 |\n| `search_files` | 搜索匹配模式的文件 |\n| `get_directory_tree` | 获取目录树结构 |\n| `start_server` | 启动 HTTP/FTP 服务器供局域网文件共享 |\n| `stop_server` | 停止 HTTP/FTP 服务器 |\n| `get_server_status` | 获取服务器状态和访问 URL |\n| `set_share_directory` | 更改共享目录 |\n\n#### 使用场景\n\nAI 助手可以：\n1. 通过 `start_server` 快速启动一个局域网文件服务器\n2. 返回访问 URL 给用户，供其他用户下载文件\n3. 通过 `stop_server` 随时停止服务\n4. 通过 `set_share_directory` 动态切换共享目录\n\n#### 在 Claude Desktop 中配置\n\n在 Claude Desktop 配置文件中添加：\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"upftp\": {\n      \"command\": \"/path/to/upftp\",\n      \"args\": [\"-enable-mcp\", \"-d\", \"/path/to/share\"]\n    }\n  }\n}\n```\n\n## 🛠️ 从源码构建\n\n需要 Go 1.24 或更高版本。详见上方 [编译安装](#方式二编译安装) 章节。\n\n```bash\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n```\n\n## 🔧 技术栈\n\n- **语言**: Go 1.24+\n- **Web框架**: 标准库 `net/http`\n- **FTP服务器**: 自定义实现\n- **WebDAV服务器**: 自定义实现\n- **NFS服务器**: 基于 go-nfs 库\n- **前端**: Vue 3 + TypeScript + Vite\n- **构建工具**: Make, GoReleaser, npm\n- **CI/CD**: GitHub Actions\n\n## 📖 详细文档\n\n- [安装指南](INSTALL.md) - 详细的安装和配置说明\n- [使用示例](EXAMPLES.md) - 各种使用场景示例\n- [更新日志](CHANGELOG.md) - 版本更新记录\n\n## ❓ 常见问题\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e如何更改默认端口？\u003c/b\u003e\u003c/summary\u003e\n\n使用 `-p` 参数指定HTTP端口：\n```bash\n./upftp -p 8080\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e如何设置FTP密码？\u003c/b\u003e\u003c/summary\u003e\n\n使用 `-user` 和 `-pass` 参数：\n```bash\n./upftp -enable-ftp -user myuser -pass mypassword\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e如何在后台运行？\u003c/b\u003e\u003c/summary\u003e\n\n在Linux系统上使用systemd服务：\n```bash\nsudo systemctl start upftp\nsudo systemctl enable upftp  # 开机自启\n```\n\n或者在命令行使用 `nohup`：\n```bash\nnohup ./upftp -auto \u003e upftp.log 2\u003e\u00261 \u0026\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e端口被占用怎么办？\u003c/b\u003e\u003c/summary\u003e\n\n检查端口占用：\n```bash\n# Linux/macOS\nlsof -i :10000\nnetstat -tlnp | grep 10000\n\n# 使用其他端口\n./upftp -p 10001\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e如何配置防火墙？\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# Ubuntu/Debian (ufw)\nsudo ufw allow 10000/tcp\nsudo ufw allow 2121/tcp  # 如果启用了FTP\n\n# CentOS/RHEL (firewalld)\nsudo firewall-cmd --permanent --add-port=10000/tcp\nsudo firewall-cmd --permanent --add-port=2121/tcp\nsudo firewall-cmd --reload\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e支持哪些文件类型的预览？\u003c/b\u003e\u003c/summary\u003e\n\n- **图片**: JPG, PNG, GIF, SVG, WebP, BMP, ICO\n- **视频**: MP4, AVI, MOV, WebM, MKV, M4V\n- **音频**: MP3, WAV, FLAC, AAC, OGG, M4A\n- **代码/文本**: 支持语法高亮的多种编程语言\n- **文档**: PDF可在浏览器预览，Office文档提供下载\n\u003c/details\u003e\n\n更多问题请查看 [EXAMPLES.md](EXAMPLES.md) 或提交 [Issue](https://github.com/zy84338719/upftp/issues)。\n\n## 🔒 安全建议\n\n1. **更改默认密码**: 使用 `-user` 和 `-pass` 设置强密码\n2. **网络隔离**: 仅在可信网络环境中使用，或在防火墙中限制访问IP\n3. **文件权限**: 注意共享目录的读写权限设置\n4. **HTTPS支持**: 生产环境建议配合反向代理（如Nginx）使用HTTPS\n\n## 🤝 贡献\n\n欢迎贡献代码、报告Bug或提出新功能建议！\n\n### 贡献方式\n\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 开启 Pull Request\n\n### 开发指南\n\n```bash\n# 克隆仓库\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\n\n# 安装依赖\nmake deps\n\n# 运行测试\nmake test\n\n# 本地构建\nmake build\n\n# 代码格式化\nmake fmt\n```\n\n## 📝 待办事项\n\n- [ ] 添加HTTPS支持\n- [ ] 添加用户认证系统\n- [ ] 支持文件上传\n- [ ] 添加WebDAV支持\n- [ ] 国际化支持更多语言\n- [ ] 添加文件缩略图缓存\n- [ ] 支持自定义主题\n\n## ⭐ Star History\n\n\u003ca href=\"https://github.com/zy84338719/upftp/stargazers\"\u003e\n  \u003cimg src=\"https://starchart.cc/zy84338719/upftp.svg\" alt=\"Star History Chart\" width=\"100%\"\u003e\n\u003c/a\u003e\n\n## 📄 许可证\n\n本项目采用 MIT 许可证 - 详见 [LICENSE.txt](LICENSE.txt) 文件。\n\n## 🙏 致谢\n\n- 感谢所有贡献者的付出\n- 感谢开源社区的支持\n\n---\n\n# English\n\n## 📸 Screenshots\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"img.png\" alt=\"UPFTP Web Interface\" width=\"80%\"\u003e\n  \u003cp\u003e\u003cem\u003eWeb Interface Preview\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"img.png\" alt=\"UPFTP Command Line Interface\" width=\"80%\"\u003e\n  \u003cp\u003e\u003cem\u003eCommand Line Interface Preview\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## ✨ Key Features\n\n### 🌐 Modern Web Interface\n- Responsive design with mobile support\n- Real-time file search functionality  \n- Intuitive file type icons\n- Elegant preview modal dialogs\n- **🌍 Multi-language Support**: Auto-detect browser language, supports Chinese/English switching\n- **🎨 New Interface Design**: Updated page title to \"AI-First File Server\", added version badge and feature showcase bar\n- **📱 Mobile Optimization**: Improved responsive design for mobile, added QR code button for mobile access\n- **📤 Upload Interface**: Enhanced upload section UI\n\n### 🎨 Smart Language Experience\n- **Auto Language Detection**: Automatically selects Chinese or English based on browser language\n- **Manual Language Switching**: One-click switch between Chinese/English, takes effect immediately without refresh\n- **Language Preference Memory**: Automatically saves user language choice, applies on next visit\n- **Complete Interface Translation**: All text elements support Chinese/English display\n\n### 🎥 Rich File Preview\n- **Images**: JPG, PNG, GIF, SVG, WebP, BMP, ICO, HEIC, HEIF, AVIF, TIFF, etc.\n- **Videos**: MP4, AVI, MOV, WebM, MKV, M4V, MPEG, 3GP, OGV, etc.\n- **Audio**: MP3, WAV, FLAC, AAC, OGG, M4A, WMA, OPUS, AIFF, APE, etc.\n- **Text/Code**: Syntax-highlighted code preview for multiple programming languages including Vue, Svelte, Dart, Kotlin, etc.\n- **Documents**: PDF preview in browser, Office document download support\n- **Container Formats**: Dockerfile, Makefile, etc.\n\n### 🚀 Multi-Protocol Support  \n- **HTTP Server**: Modern web interface for browser access\n- **FTP Server**: Traditional FTP protocol for FTP clients\n- **MCP Server**: Model Context Protocol for AI integration\n- **WebDAV Server**: Support for WebDAV protocol\n- **NFS Server**: Support for NFS protocol\n- Independent port configuration, can be enabled separately\n\n### 🔧 Convenient Management\n- **Interactive Command-line Interface**: Beautiful ASCII art logo banner and improved command menu with emoji icons\n- **File Search and Listing Management**: Improved file listing with pagination (max 20 items)\n- **Download Link Generation**: Enhanced download examples with MCP integration info\n- **Real-time File System Refresh**\n- **Server Status**: New server status and about information screens\n- **Version Info**: Version info command (`v` or `version`)\n\n### 📝 Configuration Enhancements\n- **Improved Configuration File**: Detailed comments and usage examples\n- **Configuration Path Tracking**: Configuration path tracking and display\n- **Better Organization**: Better section organization with visual separators\n\n### 📊 Better Logging\n- **Improved Log Format**: Visual indicators in log format\n- **Color-coded**: Color-coded log levels with bullet points\n- **Informative**: More informative startup messages\n\n### 🔒 Security \u0026 Configuration\n- **Path Validation**: Better validation for upload paths\n- **Error Handling**: Enhanced error handling\n\n### 🌍 Cross-Platform Support\n- **Linux**: amd64, arm64\n- **Windows**: amd64, 386\n- **macOS**: Intel, Apple Silicon\n\n## 🚀 Quick Start\n\n### Option 1: Package Manager (Recommended)\n\n#### macOS (Homebrew)\n\n```bash\n# Add tap\nbrew tap zy84338719/tap\n\n# Install\nbrew install upftp\n```\n\n#### Windows (Scoop)\n\n```powershell\n# Add bucket\nscoop bucket add upftp https://github.com/zy84338719/scoop-bucket\n\n# Install\nscoop install upftp\n```\n\n### Option 2: Download Binary\n\nDownload the pre-built binary for your platform from the [Releases page](https://github.com/zy84338719/upftp/releases):\n\n```bash\n# Linux (amd64)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_linux_amd64.tar.gz\ntar -xzf upftp_linux_amd64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n\n# Linux (arm64)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_linux_arm64.tar.gz\ntar -xzf upftp_linux_arm64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n\n# macOS (Apple Silicon)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_darwin_arm64.tar.gz\ntar -xzf upftp_darwin_arm64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n\n# macOS (Intel)\nwget https://github.com/zy84338719/upftp/releases/latest/download/upftp_darwin_amd64.tar.gz\ntar -xzf upftp_darwin_amd64.tar.gz\nchmod +x upftp\nsudo mv upftp /usr/local/bin/\n```\n\n### Option 2: Build from Source\n\nRequires **Go 1.24+**.\n\n#### macOS\n\n```bash\n# Install Go\nbrew install go\n\n# Clone and build\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n\n# Install to system path\nsudo cp upftp /usr/local/bin/\n```\n\n#### Ubuntu / Debian\n\n```bash\n# Install Go (official)\nwget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz\nsudo tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz\nexport PATH=$PATH:/usr/local/go/bin\n\n# Clone and build\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n\n# Install to system path\nsudo cp upftp /usr/local/bin/\n```\n\n#### CentOS / RHEL / Fedora\n\n```bash\n# Install Go\nwget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz\nsudo tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz\nexport PATH=$PATH:/usr/local/go/bin\n\n# Install git (if not installed)\nsudo yum install -y git   # CentOS/RHEL\n# sudo dnf install -y git # Fedora\n\n# Clone and build\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\n\n# Install to system path\nsudo cp upftp /usr/local/bin/\n```\n\n#### Cross-compile for other platforms\n\n```bash\n# View all build targets\nmake help\n\n# Build all platforms (Linux/macOS/Windows, amd64/arm64)\nmake build-all\n\n# Output in dist/\nls dist/\n```\n\n### Basic Usage\n\n```bash\n# Start with default configuration\n./upftp\n\n# Specify port and directory  \n./upftp -p 8888 -d /path/to/share\n\n# Enable FTP server\n./upftp -enable-ftp -user admin -pass mypassword\n\n# Enable MCP server (AI integration)\n./upftp -enable-mcp\n\n# Auto-select network interface (suitable for scripts)\n./upftp -auto\n```\n\n### Full Options\n\n```bash\nupftp [options]\n\nOptions:\n    -p \u003cport\u003e       HTTP server port (default: 10000)\n    -ftp \u003cport\u003e     FTP server port (default: 2121)  \n    -webdav \u003cport\u003e  WebDAV server port (default: 8080)\n    -nfs \u003cport\u003e     NFS server port (default: 2049)\n    -d \u003cdir\u003e        Share directory (default: current directory)\n    -auto           Automatically select first available network interface\n    -enable-ftp     Enable FTP server\n    -enable-webdav  Enable WebDAV server\n    -enable-nfs     Enable NFS server\n    -enable-mcp     Enable MCP server for AI integration\n    -user \u003cname\u003e    FTP username (default: admin)\n    -pass \u003cpass\u003e    FTP password (default: admin)\n    -h              Show help message\n```\n\n### Access Methods\n\nAfter startup, you can access via:\n\n1. **Web Browser**: `http://your-ip:port`\n2. **FTP Client**: `ftp://your-ip:ftp-port`\n3. **WebDAV Client**: `http://your-ip:webdav-port`\n4. **NFS Client**: `your-ip:/share`\n5. **Command Line**: `curl -O http://your-ip:port/download/filename`\n\n### MCP Integration\n\nupftp supports [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), enabling AI assistants (like Claude) to directly access and manage files in the shared directory.\n\n#### Enable MCP\n\n```bash\n./upftp -enable-mcp -d /path/to/share\n```\n\n#### Available MCP Tools\n\n| Tool Name | Description |\n|-----------|-------------|\n| `list_files` | List files and directories in a specified path |\n| `get_file_info` | Get detailed information about a file or directory |\n| `read_file` | Read the content of a text file |\n| `download_file` | Get download URL and base64 encoded content for a file |\n| `search_files` | Search for files matching a pattern |\n| `get_directory_tree` | Get the directory tree structure |\n| `start_server` | Start HTTP/FTP server for LAN file sharing |\n| `stop_server` | Stop HTTP/FTP servers |\n| `get_server_status` | Get current server status and access URLs |\n| `set_share_directory` | Change the shared directory |\n\n#### 使用场景\n\nAI 助手可以：\n1. 通过 `start_server` 快速启动一个局域网文件服务器\n2. 返回访问 URL 给用户，供其他用户下载文件\n3. 通过 `stop_server` 随时停止服务\n4. 通过 `set_share_directory` 动态切换共享目录\n\n#### Configure in Claude Desktop\n\nAdd to your Claude Desktop config file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"upftp\": {\n      \"command\": \"/path/to/upftp\",\n      \"args\": [\"-enable-mcp\", \"-d\", \"/path/to/share\"]\n    }\n  }\n}\n```\n\n## 🛠️ Build from Source\n\nRequires Go 1.24+. See [Build from Source](#option-2-build-from-source) above for per-platform instructions.\n\n```bash\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\nmake deps \u0026\u0026 make build\nmake package\n\n# View all build options\nmake help\n```\n\n## 🔧 Tech Stack\n\n- **Language**: Go 1.24+\n- **Web Framework**: Standard library `net/http`\n- **FTP Server**: Custom implementation\n- **WebDAV Server**: Custom implementation\n- **NFS Server**: Based on go-nfs library\n- **Frontend**: Vue 3 + TypeScript + Vite\n- **Build Tools**: Make, GoReleaser, npm\n- **CI/CD**: GitHub Actions\n\n## 📖 Documentation\n\n- [Installation Guide](INSTALL.md) - Detailed installation and configuration\n- [Usage Examples](EXAMPLES.md) - Various usage scenarios\n- [Changelog](CHANGELOG.md) - Version update history\n\n## ❓ FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow to change the default port?\u003c/b\u003e\u003c/summary\u003e\n\nUse the `-p` parameter to specify HTTP port:\n```bash\n./upftp -p 8080\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow to set FTP credentials?\u003c/b\u003e\u003c/summary\u003e\n\nUse `-user` and `-pass` parameters:\n```bash\n./upftp -enable-ftp -user myuser -pass mypassword\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow to run in background?\u003c/b\u003e\u003c/summary\u003e\n\nUse systemd service on Linux:\n```bash\nsudo systemctl start upftp\nsudo systemctl enable upftp  # Auto-start on boot\n```\n\nOr use `nohup` command:\n```bash\nnohup ./upftp -auto \u003e upftp.log 2\u003e\u00261 \u0026\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePort already in use?\u003c/b\u003e\u003c/summary\u003e\n\nCheck port usage:\n```bash\n# Linux/macOS\nlsof -i :10000\nnetstat -tlnp | grep 10000\n\n# Use a different port\n./upftp -p 10001\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow to configure firewall?\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# Ubuntu/Debian (ufw)\nsudo ufw allow 10000/tcp\nsudo ufw allow 2121/tcp  # If FTP is enabled\n\n# CentOS/RHEL (firewalld)\nsudo firewall-cmd --permanent --add-port=10000/tcp\nsudo firewall-cmd --permanent --add-port=2121/tcp\nsudo firewall-cmd --reload\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWhat file types are supported for preview?\u003c/b\u003e\u003c/summary\u003e\n\n- **Images**: JPG, PNG, GIF, SVG, WebP, BMP, ICO\n- **Videos**: MP4, AVI, MOV, WebM, MKV, M4V\n- **Audio**: MP3, WAV, FLAC, AAC, OGG, M4A\n- **Code/Text**: Multiple programming languages with syntax highlighting\n- **Documents**: PDF preview in browser, Office documents available for download\n\u003c/details\u003e\n\nFor more questions, check [EXAMPLES.md](EXAMPLES.md) or submit an [Issue](https://github.com/zy84338719/upftp/issues).\n\n## 🔒 Security Recommendations\n\n1. **Change Default Password**: Use `-user` and `-pass` to set strong credentials\n2. **Network Isolation**: Only use in trusted network environments or restrict access via firewall\n3. **File Permissions**: Pay attention to read/write permissions on shared directories\n4. **HTTPS Support**: For production, use with reverse proxy (e.g., Nginx) for HTTPS\n\n## 🤝 Contributing\n\nContributions, bug reports, and feature requests are welcome!\n\n### How to Contribute\n\n1. Fork this repository\n2. Create a feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n### Development Guide\n\n```bash\n# Clone repository\ngit clone https://github.com/zy84338719/upftp.git\ncd upftp\n\n# Install dependencies\nmake deps\n\n# Run tests\nmake test\n\n# Local build\nmake build\n\n# Code formatting\nmake fmt\n```\n\n## 📝 Roadmap\n\n- [ ] Add HTTPS support\n- [ ] Add user authentication system\n- [ ] Support file upload\n- [ ] Add WebDAV support\n- [ ] Internationalization for more languages\n- [ ] Add file thumbnail caching\n- [ ] Support custom themes\n\n## ⭐ Star History\n\n\u003ca href=\"https://github.com/zy84338719/upftp/stargazers\"\u003e\n  \u003cimg src=\"https://starchart.cc/zy84338719/upftp.svg\" alt=\"Star History Chart\" width=\"100%\"\u003e\n\u003c/a\u003e\n\n## 📄 License\n\nThis project is licensed under the MIT License - see [LICENSE.txt](LICENSE.txt) for details.\n\n## 🙏 Acknowledgments\n\n- Thanks to all contributors for their efforts\n- Thanks to the open source community for support\n\n---\n\n\u003e GitHub [@zy84338719](https://github.com/zy84338719) \u0026nbsp;\u0026middot;\u0026nbsp;\n\u003e Twitter [@murphyyi](https://twitter.com/murphyyi) \u0026nbsp;\u0026middot;\u0026nbsp;\n\u003e Website [murphyyi.com](https://murphyyi.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzy84338719%2Fupftp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzy84338719%2Fupftp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzy84338719%2Fupftp/lists"}