diff --git a/a.md b/a.md deleted file mode 100644 index 2bebfba..0000000 --- a/a.md +++ /dev/null @@ -1,158 +0,0 @@ -# 文件快递柜 - -## 解决问题 - -很多时候,我们都想将一些文件或文本传送给别人,或者跨端传递一些信息,但是我们又不想为了分享,而去下载一些七里八里的软件,这时候,我们就可以使用口令传送箱,像拿快递一样取文件。 - -## 主要特色 - -- [x] 轻量简洁,Fastapi+sqlite3 -- [x] 拖拽,复制粘贴上传 -- [x] 文件口令传输,生成二维码 -- [x] 分享文件:多种上传方式供你选择 -- [x] 分享文本:直接复制粘贴直接上传 -- [x] 防爆破:错误五次拉黑十分钟 -- [x] 完全匿名:不记录任何信息,无需注册,无需登录 -- [x] Sqlite3数据库:无需安装数据库 -- [x] 管理面板:简单列表页删除违规文件 -- [x] 口令使用次数,口令有效期,二维码分享 - -## 更新记录 -### 2022年12月13日 - -- [x] 完善手机版上传文本 -- [x] 优化Index.html首页 - -### 2022年12月12日 - -- [x] 重写用户登录和 IP 检查并重定义状态码 -- [x] 新增存储引擎统一文件读写 -- [x] 设置PORT - -### 2022年12月11日 - -1. 修复取件不显示码的问题 -2. 修复文件次数为1时,文件被删除的问题 -3. 使用 aiosqlite 驱动异步化数据库操作 -4. 增加定时清理过期文件 -5. 优化部署方式,Docker映射,后续更新直接覆盖代码重启 -6. 优化配置文件,增加配置项 -7. 发布V1.4.5稳定版 - -### 2022年12月10日 - -1. 管理面板已新增,一如既往的极简,只有删除 -2. 二维码图片(调用的网络接口,如果离线环境将无法使用,一切为了极简) -3. 取件码有效期,取件码使用次数 -4. 优化代码逻辑 -5. 限制上传文件大小 -6. 完善配置参数 - -## 系统截图 - -1. 隐藏文件真实地址 - -### 取件 - - - - -### 寄件 - - - - -### 管理面板 - - - - -## 部署教程 - -https://www.yuque.com/lxyo/work/zd0kvzy7fofx6w7v - -## 部署方式 - -为持久化,不管怎么样,先第一步,建一个文件夹,然后再下载代码 - -```bash -mkdir /opt/FileCodeBox -cd /opt/FileCodeBox -``` - -新建一个`.env`文件 - -```bash -vi .env -``` - -将下列字段内容替换成你自己的 - -```dotenv -# 端口 -PORT=12345 -# Sqlite数据库文件 -DATABASE_URL=sqlite+aiosqlite:///database.db -# 静态文件夹 -DATA_ROOT=./static -# 静态文件夹URL -STATIC_URL=/static -# 错误次数 -ERROR_COUNT=5 -# 错误限制分钟数 -ERROR_MINUTE=10 -# 上传次数 -UPLOAD_COUNT=60 -# 上传限制分钟数 -UPLOAD_MINUTE=1 -# 管理地址 -ADMIN_ADDRESS=admin -# 管理密码 -ADMIN_PASSWORD=admin -# 文件大小限制,默认10MB -FILE_SIZE_LIMIT=10 -# 网站标题 -TITLE=文件快递柜 -# 网站描述 -DESCRIPTION=FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件,图片,视频,音频,压缩包等文件 -# 网站关键词 -KEYWORDS=FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件,图片,视频,音频,压缩包等文件 -# 存储引擎 -STORAGE_ENGINE=filesystem -``` - -### 服务端部署 - -1. 安装Python3 -2. 拉取代码,解压缩 -3. 安装依赖包:`pip install -r requirements.txt` -4. 运行` uvicorn main:app --host 0.0.0.0 --port 12345` -5. 然后你自己看怎么进程守护吧 - -### 宝塔部署 - -1. 安装宝塔Python Manager -2. 然后你自己看着填吧 - -### Docker部署 -```bash -docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/.env:/app/data --name filecodebox lanol/filecodebox:latest -``` -### Docker自己构建部署 - -```bash -mkdir "/opt/FileCodeBox" -cd "/opt/FileCodeBox" -wget https://github.com/vastsa/FileCodeBox/releases/download/Main/code.zip -unzip code.zip -docker build --file Dockerfile --tag filecodebox . -docker run -d -p 12345:12345 --name filecodebox --volume /opt/FileCodeBox:/app filecodebox -``` - -## 状态 - - - -## 免责声明 - -本项目开源仅供学习使用,不得用于商业用途以及任何违法用途,否则后果自负,与本人无关。使用请保留项目地址谢谢。 diff --git a/history.md b/history.md new file mode 100644 index 0000000..504fd03 --- /dev/null +++ b/history.md @@ -0,0 +1,33 @@ +## 更新记录 + +### 2022年12月13日 + +- [x] 完善手机版上传文本 +- [x] 优化Index.html首页 +- [x] 填补了由于上面修改带来的坑 +- [x] 更新了 + +### 2022年12月12日 + +- [x] 重写用户登录和 IP 检查并重定义状态码 +- [x] 新增存储引擎统一文件读写 +- [x] 设置PORT + +### 2022年12月11日 + +1. 修复取件不显示码的问题 +2. 修复文件次数为1时,文件被删除的问题 +3. 使用 aiosqlite 驱动异步化数据库操作 +4. 增加定时清理过期文件 +5. 优化部署方式,Docker映射,后续更新直接覆盖代码重启 +6. 优化配置文件,增加配置项 +7. 发布V1.4.5稳定版 + +### 2022年12月10日 + +1. 管理面板已新增,一如既往的极简,只有删除 +2. 二维码图片(调用的网络接口,如果离线环境将无法使用,一切为了极简) +3. 取件码有效期,取件码使用次数 +4. 优化代码逻辑 +5. 限制上传文件大小 +6. 完善配置参数 diff --git a/main.py b/main.py index 5e8e6d9..3d643ca 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ import uuid import asyncio from pathlib import Path -from fastapi import FastAPI, Depends, UploadFile, Form, File, HTTPException, BackgroundTasks +from fastapi import FastAPI, Depends, UploadFile, Form, File, HTTPException, BackgroundTasks, Header from starlette.responses import HTMLResponse, FileResponse from starlette.staticfiles import StaticFiles @@ -122,9 +122,11 @@ async def index(code: str, ip: str = Depends(error_ip_limit), s: AsyncSession = @app.post('/share') -async def share(background_tasks: BackgroundTasks, text: str = Form(default=None), style: str = Form(default='2'), - value: int = Form(default=1), file: UploadFile = File(default=None), ip: str = Depends(upload_ip_limit), - s: AsyncSession = Depends(get_session)): +async def share(background_tasks: BackgroundTasks, pwd: str = Header(default=None), text: str = Form(default=None), + style: str = Form(default='2'), value: int = Form(default=1), file: UploadFile = File(default=None), + ip: str = Depends(upload_ip_limit), s: AsyncSession = Depends(get_session)): + if not settings.ENABLE_UPLOAD and pwd != settings.ADMIN_PASSWORD: + raise HTTPException(status_code=403, detail="上传功能已关闭") code = await get_code(s) if style == '2': if value > 7: diff --git a/readme.md b/readme.md index fc5771a..9e6eceb 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@
匿名口令分享文本,文件,像拿快递一样取文件