树洞剪藏#剪藏#树洞剪藏

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

2024 年 12 月 5 日1 分钟
分享Twitter / XTelegram微博

同步来源:树洞剪藏 源站剪藏 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 安全配置

上传限制保护

🎨 界面优化

全分辨率自适应布局

响应式编辑器布局

优化的移动端适配

美化的滚动条样式

平滑的动画过渡效果

优化的代码块显示

完整的中文标点符号对齐

列表项完美对齐

文件上传进度动画

复制成功提示动画

错误提示动画效果

拖放上传视觉反馈

暗色主题支持(有点瑕疵)

🚀 部署(自动)

  1. 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 : 管理员密码

设置你的管理员密码

运行工作流

  1. 一键部署

部署后默认无密码,需在 cloudflare 的对应 worker 下的变量和机密中设置:

🚀 部署(手动)

  1. 准备工作

注册 Cloudflare 账号

进入 Cloudflare 控制台

  1. 创建存储资源

创建 KV 命名空间

名称: PASTE_STORE

用于存储文本内容

创建 KV 命名空间

名称: UPLOAD_STATUS

用于存储上传功能的开关状态

创建 R2 存储桶

名称: cloudpaste-files

用于存储上传的文件

  1. 创建 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 "

  1. 部署代码

复制 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.

相关文章