Commit Graph

88 Commits

Author SHA1 Message Date
989b33d827 refactor: 移除 2FA 功能与三个冗余依赖
2FA 早已是死代码:TOTP 相关端点标注为前端未调用,前端唯一的
two_factor_auth 是硬编码 false,没有任何入口能打开它。

- 删除 TwoFactorAuthAPI、CheckTFARequiredAPI、_totp* 辅助函数、
  TwoFactorAuthCodeSerializer 及各 serializer 的 tfa_code 字段
- 删除管理端写 two_factor_auth/tfa_token 的分支。登录已不再校验
  TOTP,若保留写入路径,置 True 会变成静默的安全降级
- 删除 User.two_factor_auth / tfa_token 字段(迁移 0009)
- 移除 django-dbconn-retry:仅挂在 INSTALLED_APPS,代码零引用。
  DATABASES 未配置 CONN_MAX_AGE(默认 0),本就没有持久连接需要
  重连修复。要开持久连接用 Django 自带的 CONN_HEALTH_CHECKS
- requests 换成 httpx(openai 已经引入):删除废弃的
  ReleaseNotesAPI,judge dispatcher 显式传 timeout=None 以保持
  requests 原本的无超时行为,判题请求是同步等结果的

依赖净减 5 个:otpauth、qrcode、requests、charset-normalizer、
django-dbconn-retry

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:00:45 -06:00
92e1c2b75d refactor(deploy): 容器内 nginx 换成 Caddy
TLS 和域名由前面的 Nginx Proxy Manager 负责,容器里这层只做静态文件
和反代,用 Caddy 配置更短,也消掉了两个坑:add_header 不继承、
entrypoint 里 __IP_HEADER__ 的 sed 替换。

- deploy/nginx/ 四个配置文件合并成一个 deploy/caddy/Caddyfile
- Dockerfile 去掉 nginx 包,改从官方镜像拷 Caddy 静态二进制
- supervisord 的 nginx 程序换成 caddy,跑在非特权的 server 账号下
- entrypoint 删掉自签证书、http_locations.conf 软链、IP header sed

行为对齐:body 上限写 200MiB 才等于 nginx 的 200M;心跳和 /assets/
继续不记访问日志;安全头、缓存策略、gzip 覆盖范围保持不变。

两处行为变化:
- 访问日志变成 JSON,路径 /data/log/caddy_access.log
- X-Accel-Buffering 是 nginx 私有头,AI 的 SSE 改由 flush_interval -1
  保证不缓冲,上线需实测

FORCE_HTTPS 和 LOWER_IP_HEADER 两个环境变量随之作废,真实 IP 改由
trusted_proxies + {client_ip} 从 NPM 的 XFF 解析。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 09:50:46 -06:00
8d6f4616b9 perf(nginx): 修复 JS 未压缩,静态资源加不可变缓存
nginx 1.21.1 起 mime.types 把 .js 标成 text/javascript,而 gzip_types
只写了 application/javascript,导致前端 JS 实际一直在裸传。补全类型列表,
并加上 application/json 让 API 响应也走压缩。

gzip_comp_level 此前用的是默认值 1,改为 6,实测 js+css 总量 3.85M → 3.44M。

/assets/ 下的产物文件名带内容 hash,加 immutable 永久缓存,省掉每次进页面
对 32 个 chunk 的条件请求;index.html 反过来设 no-cache,避免发版后刷不到新版。

location 里出现 add_header 会中断 http 级 add_header 的继承,
两个 block 都重新声明了原有的三个安全头。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 09:11:48 -06:00
502078b51b update 2026-08-05 08:18:02 -06:00
1e6041d13d fix 2026-07-02 19:16:09 -06:00
dab6734d03 switch docker image 2026-06-14 09:13:05 -06:00
7974d12475 build: move ruff from dev to main dependencies (needed at runtime for code formatting)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 08:05:12 -06:00
0764946c17 add wc 2026-06-03 07:19:57 -06:00
57c0572fd9 async 2026-05-26 21:25:26 -06:00
8731012f47 use asgi 2026-05-26 07:37:05 -06:00
ed8a2f575f update 2026-05-25 21:57:38 -06:00
ae372b4ee1 fix pip 2026-05-05 07:43:25 -06:00
0fd7dedea6 update deps 2026-05-05 07:23:59 -06:00
f2b046c650 update 2025-12-20 22:04:03 +08:00
22d4a9057b add ws 2025-10-07 17:03:14 +08:00
6e1e3ef0c6 新增AI分析 2025-09-24 01:02:29 +08:00
92adfd5415 update 2025-06-13 18:55:38 +08:00
yuetsh
5a8fb8d81a remove pytz 2024-06-11 15:07:48 +08:00
6cf7087339 update Django to v5 2024-06-05 17:40:45 +08:00
yuetsh
d2dc058af5 remove heartbeat log 2024-06-04 22:25:31 +08:00
2ca96ca228 update python deps 2024-06-04 22:08:31 +08:00
bf906fcf25 update python deps 2024-06-04 18:48:19 +08:00
2d2128fa06 update 2024-05-08 18:32:54 +08:00
Mikucat
c25a314001 fix: sync UID and GID with JudgeServer 2024-04-07 18:06:37 +08:00
Mikucat
954463f9fd chore: update denpendencies 2024-04-04 15:37:43 +08:00
helsonxiao
e009777c6f fix: rundramatiq 2022-05-08 17:13:22 +08:00
Beichi-CHs
af641dd421 fix useless escape symbol 2021-11-19 00:26:42 +08:00
Harry Chen
040fb6fbbd migrate health_check.py to python3 2021-11-18 18:51:29 +08:00
Beichi-CHs
3754fa2542 upgrade build configration 2021-11-18 12:38:49 +08:00
virusdefender
ece38de1d5 database connection retry 2019-03-26 10:02:49 +08:00
virusdefender
a5f0c8eb31 remove celery and use dramatiq 2019-03-11 17:59:24 +08:00
virusdefender
6b7654a0c3 update to django 2.0 2019-03-11 11:25:10 +08:00
virusdefender
5ae50e4e54 设置 gunicorn 和 celery 的 worker 数量,最小是 2 2019-01-05 14:53:55 +08:00
李扬
829591ac05 Update nginx.conf 2018-11-05 08:15:53 +08:00
virusdefender
8403726455 fix old files permission 2018-10-14 21:33:08 +08:00
virusdefender
94baab8570 try to fix permission 2018-10-14 17:49:20 +08:00
zema1
8ee1b514e3 Fixed problems in dispatcher, fixed testcase download error 2018-08-21 15:22:35 +08:00
virusdefender
ee12a1f527 对 testcase 使用 nobody 700 的权限 2018-08-10 08:05:02 +08:00
zimo.zhang
50c8487a50 fix requirement warning 2018-07-15 12:35:14 +08:00
virusdefender
d5468803ba use secret key file 2018-05-05 15:21:53 +08:00
virusdefender
0e83a920b2 fix ip header 2018-01-06 23:58:33 +08:00
zema1
d8221ca8f5 fix cdn host replacement 2018-01-06 22:24:55 +08:00
virusdefender
dbce3e443a redis retry 2018-01-06 14:26:46 +08:00
virusdefender
b50f5404ff update replace static cdn host function 2018-01-05 10:44:19 +08:00
virusdefender
679512e3cc fix FORCE_HTTPS
add ip_header env
2018-01-05 10:44:15 +08:00
virusdefender
41f248091e add replace cdn host function 2017-12-27 22:04:06 +08:00
virusdefender
3c8e6cd9f3 use entrypoint 2017-12-24 11:01:33 +08:00
virusdefender
3c70ecbd19 add sentry 2017-12-24 11:01:33 +08:00
virusdefender
eeadb5b87b fix docker exec error 2017-12-19 22:25:10 +08:00
virusdefender
2f76a46500 add ssl helper 2017-12-16 01:53:59 +08:00