CloudPaste: 基于 Cloudflare Workers 的在线剪贴板和文件分享服务,支持 Markdown、密码保护、文件上传等功能

同步来源:树洞剪藏 源站剪藏 ID:244 原文地址:https://github.com/ling-drag0n/CloudPaste
ling-drag0n/CloudPaste: 基于 Cloudflare Workers 的在线剪贴板和文件分享服务,支持 Markdown、密码保护、文件上传等功能
/ " data-turbo-transient=true>
set 限制解除
Skip to content
Navigation Menu
ling-drag0n
/
CloudPaste
Type / to search
Create new...
Issues
Pull requests
You have unread notifications
Code
Issues 0
Pull requests 0
Actions
Projects 0
Security
Insights
Additional navigation options
{{ message }}
Create list
-->
Create a list to organize your starred repositories.
Name .
32 remaining
Description .
160 remaining
.
Create
Tip: type : to add emoji to the name or description.
CloudPaste
Public
Watch 1
Fork 82 Fork your own copy of ling-drag0n/CloudPaste
Forks could not be loaded
Loading
Unstar this repository?
This will remove {{ repoNameWithOwner }} from the {{ listsWithCount }} that it's been added to.
-->
Unstar
Starred 257
Lists
Loading
Lists
Loading
Open in github.dev ,>" target=_blank rel="noopener noreferrer">Open in a new github.dev tab Open in codespace
ling-drag0n/CloudPaste
main 1 Branch 0 Tags
t
Add file Add file Code
Folders and files Name Last commit message Last commit date
Latest commit
ling-drag0n
fix:bug && feat: 自动保存文本内容 &&feat:支持代码块复制
fa6f3d8 · 15 hours ago Dec 4, 2024
History 60 Commits
.github/ workflows
Update deploy.yml 4 days ago Dec 1, 2024
.gitignore
chore: improve security by using GitHub secrets for admin credentials last week Nov 27, 2024
LICENSE
Initial commit 2 weeks ago Nov 23, 2024
README.md
部署使用前请先阅读README.md 4 days ago Dec 1, 2024
worker.js
fix:bug && feat: 自动保存文本内容 &&feat:支持代码块复制 15 hours ago Dec 4, 2024
wrangler.toml
chore(config): 更新 wrangler 配置 5 days ago Nov 30, 2024
Repository files navigation README MIT license
CloudPaste - 在线剪贴板 📋
一个基于 Cloudflare Workers 的在线剪贴板和文件分享服务。支持 Markdown、密码保护、文件上传等功能。
✨ 功能特点
📝 文本分享
支持普通文本和 Markdown 格式
Markdown 实时预览和同步滚动
完整的 Markdown 样式支持
优化的列表嵌套显示
美化的表格样式
代码块实时语法高亮
标准的任务列表样式
优化的引用块样式
支持数学公式渲染 (KaTeX)
编辑器支持双向拉伸调整大小
支持密码保护
可选过期时间
同步滚动预览
支持自定义链接后缀(仅单文件上传时可用)
支持设置访问次数限制
📁 文件分享
支持拖拽上传
多文件上传
文件大小限制(98MB,注意 worker 限制和 R2 限制)
密码保护
自定义过期时间
实时上传进度显示
文件预览功能
图片预览
音频预览
视频预览
上传速度显示
支持取消上传
文件类型图标显示
支持自定义链接后缀(仅单文件上传时可用)
支持二维码分享
支持设置下载次数限制
👨💻 管理功能
管理员登录
管理员状态持久化
查看所有分享链接
可管理文本/文件上传(防止被盗刷额度)
开启/关闭文本上传功能
开启/关闭文件上传功能
分类过滤(文本/文件)
删除分享(带确认提示)
复制分享链接
查看分享统计
总分享数
有效分享数
剩余访问/下载次数统计
监控存储空间使用情况
已用空间
总容量
使用率百分比
存储空间预警提示(70%警告,90%危险)
修改分享密码(支持文本和文件分享)
可随时添加/移除密码保护
支持清空密码移除保护
编辑文本分享内容
支持实时 Markdown 预览
可切换 Markdown 开关
与主页编辑器相同的编辑体验
分屏预览模式
🔐 访问控制
密码保护
支持文本和文件分享设置密码
管理员可随时修改或移除密码
密码加密存储
文本内容控制
仅管理员可编辑已分享的文本内容
普通用户只能查看
上传控制
管理员可开启/关闭文本上传功能
管理员可开启/关闭文件上传功能
防止恶意上传占用资源
🛡️ 安全特性
密码加密存储
自动过期清理 (每当有请求访问时,检查当前时间,如果是整点(分钟为 0),触发清理操作)
访问权限控制
CORS 安全配置
上传限制保护
🎨 界面优化
全分辨率自适应布局
响应式编辑器布局
优化的移动端适配
美化的滚动条样式
平滑的动画过渡效果
优化的代码块显示
完整的中文标点符号对齐
列表项完美对齐
文件上传进度动画
复制成功提示动画
错误提示动画效果
拖放上传视觉反馈
暗色主题支持(有点瑕疵)
🚀 部署(自动)
- GitHub Actions 部署(可选)
Fork 本仓库
点击右上角的 Fork 按钮
等待仓库克隆完成
设置 GitHub Secrets
在你的 GitHub 仓库中,转到 Settings -> Secrets and variables -> Actions ,添加以下 secrets:
CF_API_TOKEN : Cloudflare API 令牌
访问 Cloudflare Dashboard
创建新的 API 令牌 -选择"编辑 Cloudflare Workers"
CF_ACCOUNT_ID : Cloudflare 账户 ID
在 Cloudflare 仪表板右侧可以找到
ADMIN_USERNAME : 管理员用户名
设置你的管理员账号
ADMIN_PASSWORD : 管理员密码
设置你的管理员密码
运行工作流
- 一键部署
部署后默认无密码,需在 cloudflare 的对应 worker 下的变量和机密中设置:
🚀 部署(手动)
- 准备工作
注册 Cloudflare 账号
进入 Cloudflare 控制台
- 创建存储资源
创建 KV 命名空间
名称: PASTE_STORE
用于存储文本内容
创建 KV 命名空间
名称: UPLOAD_STATUS
用于存储上传功能的开关状态
创建 R2 存储桶
名称: cloudpaste-files
用于存储上传的文件
- 创建 Worker
创建新的 Worker脚本
配置环境变量:
ADMIN_USERNAME = 你的管理员用户名 ADMIN_PASSWORD = 你的管理员密码
绑定存储:
KV 绑定:
文本存储
变量名:PASTE_STORE 选择创建的 KV 命名空间
上传状态控制
变量名:UPLOAD_STATUS 选择创建的 KV 命名空间
R2 绑定:
变量名:FILE_STORE 选择创建的 R2 存储桶
KV 命名空间说明:
PASTE_STORE : 用于存储文本分享内容和元数据
UPLOAD_STATUS : 用于存储和控制上传功能的开关状态
textUpload : 控制文本上传功能
fileUpload : 控制文件上传功能
FILE_STORE : 用于存储上传的文件
配置示例代码 (wrangler.toml):
[[ kv_namespaces ]] binding = " PASTE_STORE " id = " 你的KV命名空间ID "
[[ kv_namespaces ]] binding = " UPLOAD_STATUS " id = " 你的KV命名空间ID "
[[ r2_buckets ]] bucket_name = " cloudpaste-files " binding = " FILE_STORE "
- 部署代码
复制 worker.js 的完整代码
粘贴到 Worker 的编辑器中
保存并部署
🔧 代码结构说明
主要组件
worker.js
主要的 Worker 代码
包含路由处理和 API 实现
工具函数
generateId : 生成随机 ID
hashPassword : 密码加密
verifyPassword : 密码验证
calculateExpiryTime : 计算过期时间
isExpired : 检查是否过期
前端组件
Vue 3 应用
Markdown 渲染
代码高亮
文件上传界面
📡 API 端点
文本相关
POST /api/paste # 创建文本分享 GET /api/paste/:id # 获取文本内容
文件相关
POST /api/file # 上传文件 GET /api/file/:id # 获取文件信息 GET /api/file/:id?download=true # 下载文件
管理相关
POST /api/admin/login # 管理员登录 GET /api/admin/shares # 获取分享列表 GET /api/admin/storage # 获取存储空间使用情况 DELETE /api/admin/paste/:id # 删除文本分享 DELETE /api/admin/file/:id # 删除文件分享 PUT /api/admin/paste/:id/content # 更新文本内容 PUT /api/admin/paste/:id/password # 修改文本分享密码 PUT /api/admin/file/:id/password # 修改文件分享密码 GET /api/admin/upload-status # 获取上传状态 PUT /api/admin/upload-status # 更新上传状态
🔄 自动化功能
过期内容清理
自动检测过期内容
定时清理过期文件和文本
释放存储空间
每整点自动触发清理
⚠️ 使用限制
文件大小上限:98MB
支持的过期时间:1小时、1天、7天、30天,永不过期
并发请求受Worker限制
总存储空间:5GB
分享次数访问限制:
文本分享可设置最大访问次数
文件分享可设置最大下载次数
自定义设置次数,0表示无限制
达到限制次数后自动删除
自定义链接限制:
仅支持字母、数字、横线和下划线
仅单文件上传时可用
上传功能限制:
管理员可随时开启/关闭文本上传
管理员可随时开启/关闭文件上传
存储空间预警:
70%使用率时显示警告
90%使用率时显示危险提示
存储空间满时无法继续上传
📝 注意事项
确保正确配置环境变量
定期检查存储使用量
通过管理面板监控存储空间
注意存储空间使用率预警
及时清理不需要的内容
监控错误日志
注意 Worker 使用配额
🛠️ 使用
Cloudflare Workers
Cloudflare KV
Cloudflare R2
Vue 3
Marked (Markdown 渲染)
Highlight.js (代码高亮)
📱 浏览器支持
Chrome (推荐)
Firefox
Safari
Edge
移动端浏览器
📄 许可证
MIT License
🔗 相关链接
Cloudflare Workers 文档
Vue 3 文档
Marked 文档
Star History
About
基于 Cloudflare Workers 的在线剪贴板和文件分享服务,支持 Markdown、密码保护、文件上传等功能
copy.vw50.ggff.net/share/paste/example
Topics
markdown
workers
cloudflare
kv-storage
cloudflare-workers
r2-storage
cloudpaste
Resources
Readme
License
MIT license
Activity
Stars
257 stars
Watchers
1 watching
Forks
82 forks
Report repository
Releases
No releases published
Packages 0
No packages published
Contributors 3
ling-drag0n dragon2
peanut996 坐和放宽
KiritoXDone
Languages
JavaScript 100.0%
Footer
© 2024 GitHub, Inc.
Footer navigation
Terms
Privacy
Security
Status
Docs
Contact
Manage cookies
Do not share my personal information
You can’t perform that action at this time.