FileCodeBox 管理面板完全指南:从登录认证到文件、配置与本地文件的运维实战
FileCodeBox 管理面板完全指南从登录认证到文件、配置与本地文件的运维实战【免费下载链接】FileCodeBox文件快递柜-匿名口令分享文本文件像拿快递一样取文件FileCodeBox - File Express Cabinet - Anonymous Passcode Sharing Text, Files, Like Taking Express Delivery for Files项目地址: https://gitcode.com/GitHub_Trending/fi/FileCodeBoxFileCodeBox文件快递柜内置了一套功能完善的管理面板管理员可以登录后台统一管理分享文件、查看系统运行状态并在线修改全部配置。本篇指南以 docs/en/guide/management.md 为主线结合 apps/admin 模块源码与测试用例系统讲解管理面板的访问方式、JWT 认证机制、仪表盘指标、文件管理、本地文件管理、系统设置及完整 REST API帮助你在生产环境安全、高效地运维 FileCodeBox 实例。读完本文你将掌握从首次初始化、日常文件治理到配置热更新的全部后台操作并理解其底层实现原理。访问管理面板管理面板位于站点根路径下的/admin。整个后台的路由定义在 apps/admin/views.py 中所有接口统一挂在/admin前缀下并通过全局依赖admin_required做权限校验。登录方式按以下步骤完成首次登录首次运行站点时系统会自动跳转到初始化页面/setup在此页面设置管理员密码在浏览器中访问http://your-domain.com/admin输入管理员密码即admin_token配置项的值点击登录按钮进入后台。::: tip 提示 未初始化时会自动进入初始化页面。生产环境请先完成初始化再开放公网访问。 :::初始化流程的实现在 apps/base/config.py 的initialize_system中管理员密码会被hash_password哈希后写入数据库同时校验 JWT 签名密钥是否有效不足则自动生成。初始化页面由 apps/base/setup_wizard.py 渲染表单会同步收集上传大小限制、上传频率、取件错误频率、登录失败频率、最长保存时间、提取码类型数字/随机字符与允许的过期方式等参数最小密码长度为 8 位见 apps/base/config.py。显示管理入口默认情况下首页不显示管理面板入口防止入口被恶意扫描。通过配置控制是否在首页显示配置项类型默认值说明show_admin_addrint0是否在首页显示管理入口1显示0隐藏::: warning 安全建议 在公开服务中建议保持show_admin_addr为0通过直接访问/admin路径进入管理面板减少被恶意扫描的风险。 :::该配置项由公开配置接口透出见 apps/base/setup_wizard.py 中的show_admin_address并有专门的回归测试 tests/test_issue_480_admin_address.py 验证其开关行为。认证机制管理面板使用 JWTJSON Web Token进行身份认证流程如下登录成功后服务器返回一个包含管理员身份的 Token后续请求通过Authorization: Bearer token头部携带 TokenToken 用于验证管理员身份确保只有授权用户可以访问管理功能。登录接口的实现位于 apps/admin/views.py密码通过verify_password校验失败会记入ip_limit[login]频率限制对应login_count/login_minute配置默认 5 次/15 分钟成功后调用create_token生成 HS256 签名的 JWT。Token 的签发与验签逻辑在 apps/admin/dependencies.pypayload 中包含is_admin: true与exp过期时间签名使用jwt_secret通过 HMAC-SHA256 计算。会话有效期由admin_session_expire控制默认 30 天取值必须是 1365 之间的整天数见 core/settings.py 的ADMIN_SESSION_EXPIRE_*常量与 apps/admin/dependencies.py 的校验逻辑。除POST /admin/login外所有后台接口都会经过admin_required依赖强制校验见 apps/admin/dependencies.py。仪表盘登录后首先看到的是仪表盘页面展示系统的整体运行状态。数据由GET /admin/dashboard接口返回见 apps/admin/views.py。统计指标仪表盘显示以下关键指标指标说明文件总数(totalFiles)系统中存储的文件总数量存储使用量(storageUsed)所有文件占用的总存储空间字节系统运行时间(sysUptime)系统首次启动的时间昨日上传数(yesterdayCount)昨天一整天上传的文件数量昨日上传量(yesterdaySize)昨天上传文件的总大小字节今日上传数(todayCount)今天到目前为止上传的文件数量今日上传量(todaySize)今天上传文件的总大小字节指标说明文件总数包括所有未过期的文件和文本分享存储使用量显示实际文件占用的存储空间不包括数据库等系统文件昨日/今日统计基于文件创建时间计算用于了解系统使用趋势。::: tip 提示 存储使用量显示的是字节数。例如10485760表示约 10MB。 :::从源码看这些指标全部通过 Tortoise ORM 的 SQL 聚合计算Count/Sum避免整表载入内存见 apps/admin/views.py过期判断有对应的 SQL 版谓词_expired_predicateapps/admin/views.py与模型层的is_expired语义保持一致。除文档列出的指标外接口还会额外返回活跃/过期文件数、文本分享数、分片上传数、存储后端类型、上传限制以及最近 8 个文件与后台操作记录等扩展数据供新版前端展示健康摘要health_summary使用。文件管理文件管理页面展示系统中所有已分享的文件支持分页浏览、搜索、删除、下载与信息修改。文件列表列表信息包括文件 ID提取码code文件名前缀prefix文件后缀suffix文件大小创建时间过期时间剩余下载次数列表接口为GET /admin/file/listapps/admin/views.py后端会对page/size做边界保护page最小为 1size限制在 1100 之间。除关键词外list_files还支持按状态active/expired、类型file/text/chunked、健康度如 danger、expiring_soon、storage_issue过滤并可指定排序字段与排序方向合法排序字段由FileService.SORT_FIELDS白名单约束见 apps/admin/services.py。搜索文件使用搜索功能可以快速找到特定文件在搜索框中输入关键词系统会根据文件名前缀prefix进行模糊匹配搜索结果实时更新。搜索示例输入report可以找到所有文件名包含 report 的文件输入.pdf可以找到所有 PDF 文件如果文件名包含此字符串。源码实现中关键词匹配覆盖更广_match_admin_fileapps/admin/services.py会同时对提取码code、文件名name、前缀prefix、后缀suffix、文件哈希file_hash乃至文本分享内容做不区分大小写的子串匹配。分页浏览文件列表支持分页显示参数默认值说明page1当前页码size10每页显示数量删除文件管理员可以删除任意文件在文件列表中找到要删除的文件点击删除按钮确认删除操作。::: danger 警告 删除操作不可恢复文件将从存储后端永久删除同时删除数据库中的记录。 :::删除流程系统首先从存储后端本地/S3/OneDrive 等删除实际文件然后从数据库中删除文件记录删除后对应的提取码将失效。核心实现是 apps/admin/services.py 的_delete_file_code文本分享只删数据库记录普通文件则先调用存储接口delete_file删除实体文件再清理关联的元数据记录并删除FileCodes行。删除单个文件的接口为DELETE /admin/file/deleteapps/admin/views.py另外还提供了DELETE/POST /admin/file/batch-delete批量删除接口返回包含成功/缺失/失败明细的统计结果。下载文件管理员可以直接下载任意文件在文件列表中找到目标文件点击下载按钮文件将通过浏览器下载。对于文本分享系统会直接返回文本内容而不是下载文件。接口为GET /admin/file/download?id123apps/admin/views.py对应服务方法download_fileapps/admin/services.py文本分享直接返回text字段普通文件则从当前配置的存储后端取出文件响应流。后台还提供GET /admin/file/preview预览接口可对文本分享返回最多 20000 字符默认 4000的预览内容。修改文件信息管理员可以修改已分享文件的部分信息可修改字段说明code提取码必须唯一不能与其他文件重复prefix文件名前缀suffix文件后缀名expired_at过期时间expired_count剩余下载次数修改提取码原提取码abc123 新提取码myfile2024::: warning 注意 修改提取码时系统会检查新提取码是否已被使用。如果已存在相同的提取码修改将失败。 :::接口为PATCH /admin/file/updateapps/admin/views.py服务端update_fileapps/admin/services.py在修改code前会先查询FileCodes表若新 code 已被占用则返回 400「code已存在」只有字段确实发生变化时才会写库。此外后台还提供批量更新/file/batch-update、批量策略动作/file/batch-policy-action接口策略动作支持延长 24 小时/7 天、设为永久、重置下载次数apps/admin/services.py以及文件备注与标签元数据/file/metadata、视图预设/file/view-presets等扩展能力。本地文件管理除了管理已分享的文件管理面板还提供了本地文件管理功能用于管理data/local目录中的文件。对应服务类为 apps/admin/services.py 的LocalFileService。查看本地文件本地文件列表显示data/local目录中的所有文件信息说明文件名文件的完整名称创建时间文件的创建时间文件大小文件大小字节接口为GET /admin/local/lists若目录不存在会自动创建。分享本地文件可以将本地文件快速分享在本地文件列表中选择要分享的文件设置过期方式和过期值点击分享按钮系统生成提取码。分享参数参数说明filename要分享的文件名expire_style过期方式day/hour/minute/forever/countexpire_value过期值天数/小时数/分钟数/下载次数分享流程由share_local_fileapps/admin/services.py实现先通过reserve_storage预占配额1 小时 TTL再把文件读入内存写入当前存储后端并创建FileCodes记录最后释放预占配额若建记录失败会回滚删除刚写入的存储文件。删除本地文件可以删除data/local目录中的文件在本地文件列表中找到要删除的文件点击删除按钮确认删除。::: tip 使用场景 本地文件管理功能适用于批量上传文件到服务器后进行分享管理通过其他方式上传到服务器的文件清理不需要的本地文件。 :::安全性上LocalFileClassapps/admin/services.py只允许data/local目录下的单层文件名会拒绝包含路径分隔符、绝对路径、./..等输入并通过resolve()后relative_to()校验确保路径始终落在本地目录内阻断路径穿越攻击。删除接口DELETE /admin/local/delete与分享接口POST /admin/local/share分别对应 apps/admin/views.py。系统设置查看配置在系统设置页面可以查看当前所有配置项的值。配置项按类别分组显示基础设置站点名称、描述等上传设置文件大小限制、频率限制等存储设置存储类型、路径等主题设置主题选择、透明度等安全设置管理员密码、错误限制等配置读取接口为GET /admin/config/getapps/admin/views.py。ConfigService.get_configapps/admin/services.py返回运行时全量配置但会将admin_token置空并剔除内部键如jwt_secret避免敏感信息泄露——内部键白名单定义在 core/security.py。修改配置管理员可以通过管理面板修改大部分配置进入系统设置页面找到要修改的配置项输入新的值点击保存按钮。可修改的配置项类别配置项示例基础设置name,description,keywords,notify_title,notify_content上传设置upload_size,upload_minute,upload_count,open_upload,enable_chunk过期设置expire_style,max_save_seconds主题设置themes_select,opacity,background安全设置admin_token,show_admin_addr,error_minute,error_count存储设置file_storage,storage_path及各存储后端的配置配置更新接口为PATCH /admin/config/updateapps/admin/views.py服务端ConfigService.update_configapps/admin/services.py做了多层校验与安全处理admin_token不能为空明文密码提交时会自动升级为哈希存储并同步轮换jwt_secret保证改密后旧 Token 立即失效themes_choices在接口层被强制剔除apps/admin/views.py不可通过后台修改整数与浮点字段INT_FIELDS/FLOAT_FIELDS见 apps/admin/services.py会做类型强转格式错误返回 400admin_session_expire必须是 1365 个整天、storage_limit不能小于 0、background发生变化时需通过 URL 校验。::: warning 注意admin_token管理员密码不能设置为空themes_choices主题列表不可通过管理面板修改修改存储设置后已有文件不会自动迁移。 :::配置生效配置修改后立即生效无需重启服务。配置保存在数据库中重启后仍然有效。配置存储位置数据库data/filecodebox.db表名keyvalue键名settings配置的运行时加载由 apps/base/config.py 的refresh_settings完成写入路径调用refresh_settings(forceTrue)强制刷新进程内带 2 秒 TTL 缓存避免每请求查库_sync_ip_limits会把限流参数同步到各频率限制器。默认配置全集含各存储后端参数、主题列表、服务端口等见 core/settings.py。API 接口管理面板的所有功能都通过 REST API 实现以下是主要接口完整路由见 apps/admin/views.py。除登录外所有请求都需携带Authorization: Bearer token头。认证接口登录POST /admin/login Content-Type: application/json { password: your-admin-password }响应{ code: 200, detail: { token: eyJhbGciOiJIUzI1NiIs..., token_type: Bearer } }实际响应中还包含expires_in与expires_at便于前端实现会话倒计时。仪表盘接口获取统计数据GET /admin/dashboard Authorization: Bearer token文件管理接口获取文件列表GET /admin/file/list?page1size10keyword Authorization: Bearer token删除文件DELETE /admin/file/delete Authorization: Bearer token Content-Type: application/json { id: 123 }下载文件GET /admin/file/download?id123 Authorization: Bearer token修改文件信息PATCH /admin/file/update Authorization: Bearer token Content-Type: application/json { id: 123, code: newcode, expired_at: 2024-12-31T23:59:59 }本地文件接口获取本地文件列表GET /admin/local/lists Authorization: Bearer token删除本地文件DELETE /admin/local/delete Authorization: Bearer token Content-Type: application/json { filename: example.txt }分享本地文件POST /admin/local/share Authorization: Bearer token Content-Type: application/json { filename: example.txt, expire_style: day, expire_value: 7 }配置接口获取配置GET /admin/config/get Authorization: Bearer token更新配置PATCH /admin/config/update Authorization: Bearer token Content-Type: application/json { admin_token: new-password, upload_size: 52428800 }上述核心接口均有自动化测试覆盖可参考 tests/test_admin_security.py、tests/test_api_contract.py 与 tests/test_integration_journey.py它们验证了登录鉴权、接口契约与登录后完整操作链路的行为。常见问题忘记管理员密码如果忘记了管理员密码可以通过以下方式重置停止 FileCodeBox 服务使用 SQLite 工具打开data/filecodebox.db查询keyvalue表中keysettings的记录修改 JSON 中的admin_token值重启服务。-- 查看当前配置 SELECT * FROM keyvalue WHERE key settings; -- 或者删除配置重启后重新进入初始化流程 DELETE FROM keyvalue WHERE key settings;需要说明的是admin_token在库中保存的是经过哈希的口令而非明文见 core/utils.py 的hash_password/verify_password与 core/security.py 的哈希迁移逻辑直接手改哈希值存在风险。更稳妥的做法是执行DELETE FROM keyvalue WHERE key settings;后重启服务通过初始化页面重新设置管理员密码与各项参数系统在启动时会检测空密码/旧版默认密码并提示重新初始化见 apps/base/config.py 与 tests/test_password_hashing.py。文件删除失败如果删除文件时出现错误可能的原因存储后端连接失败检查存储配置是否正确文件已不存在文件可能已被手动删除权限不足检查存储目录的写入权限。配置修改不生效如果修改配置后没有生效检查是否点击了保存按钮刷新页面查看配置是否已保存检查浏览器控制台是否有错误信息确认配置值的格式是否正确如数字类型不要输入字符串admin_session_expire需为 1365 的整天数background需通过 URL 格式校验。下一步配置指南 - 了解所有配置选项的详细说明安全设置 - 了解如何增强系统安全性存储配置 - 配置不同的存储后端【免费下载链接】FileCodeBox文件快递柜-匿名口令分享文本文件像拿快递一样取文件FileCodeBox - File Express Cabinet - Anonymous Passcode Sharing Text, Files, Like Taking Express Delivery for Files项目地址: https://gitcode.com/GitHub_Trending/fi/FileCodeBox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →