-
hanyul released this
2026-10-28 21:17:24 +09:00 데이터 보호
- 공유 폴더 자체(맨 위 단계의 폴더)는 웹·WebDAV 어디서든 지우기, 옮기기, 이름 바꾸기를 할 수 없습니다. 맨 위 단계에는 파일이나 폴더를 만들 수 없습니다. 화면에서도 해당 버튼이 꺼집니다.
- 덮어쓴 기존 파일은
#recycle로 옮겨 둡니다. 중간에 실패하면 원래 파일을 되돌립니다. - 공유 폴더 사이 이동은 파일마다 복사한 뒤 원본을 지웁니다. 숨김 파일과 링크도 함께 옮기고, 그 안을 가리키던 공유 링크 경로가 따라갑니다.
- 복사할 때 링크는 따라가지 않고 링크 그대로 복사합니다.
새 기능
- 복사·이동 작업에 취소 버튼이 생겼습니다. 이미 옮긴 항목은 그대로 둡니다.
- 격자 보기: 시놀로지가 만들어 둔 썸네일을 보여 주고, 작은 이미지는 원본을 씁니다. 고른 보기는 기억합니다.
- 공유 링크
- 다운로드 횟수 제한
- 일시 중지(설정 버튼)
- 폴더 링크에서 방문자 업로드 허용: 이름이 겹치면
이름 (1)로 저장, 올린 파일 기록 탭
보안
- IP별 제한에 더해 계정별 로그인 실패 제한(
MAX_ACCOUNT_FAILURES, 기본 30)을 둡니다. WebDAV 로그인과 OTP 실패도 횟수에 넣습니다. - 패스키는 PIN이나 생체 인증을 요구합니다(
PASSKEY_REQUIRE_UV, 기본true). 사용 횟수를 확인하고, 등록되지 않은 계정에도 가짜 키 정보를 돌려줘서 계정 유무를 알 수 없게 합니다. - 로그인 세션을 해시로
state/app.db에 저장해서 재시작해도 로그인이 유지됩니다. 업데이트 직후에는 한 번 다시 로그인해야 합니다. - 활동 로그(
state/activity.log)에 로그인, 공유, 업로드, 이동·복사, WebDAV 쓰기를 남깁니다. - 보내는 파일에
Content-Security-Policy: sandbox(PDF 제외), 컨테이너는 읽기 전용(read_only,tmpfs /tmp,pids_limit)으로 바꿨습니다. - 공유 링크 방문자는 미디어 재생과 ZIP 받기를 동시에 몇 개까지만 할 수 있습니다. 공유 폴더 밖을 가리키는 링크는 목록에서 숨깁니다.
- Cloudflare IP 목록을
CLOUDFLARE_IPS로 바꿀 수 있습니다.
정리
- 웹 화면 코드를 기능별 모듈로 나눴고, 정적 파일은 ETag로 캐시합니다.
- ZIP 이어받기 계획을 다시 쓰고, CRC 캐시는 SQLite로 옮겼습니다.
- 단위 테스트(
npm run test:unit)를 추가했습니다.
업데이트
compose.yaml이 바뀌었습니다(읽기 전용 설정). 새compose.yaml을 받은 뒤docker compose pull && docker compose up -d하세요.이미지:
git.2ex.dev/hanyul/webdav:latestDownloads 2
-
Source code (zip)
0
2026-10-28 21:17:24 +09:00 -
Source code (tar.gz)
0
2026-10-28 21:17:24 +09:00