Add verified administrator controls and upload abuse limits
This commit is contained in:
16
README.md
16
README.md
@@ -75,13 +75,25 @@ NAS 파일은 `/volume1/docker/projects/apps/hop/uploads/originals` 안에서 **
|
||||
|
||||
계정 메일 토큰은 일회용·해시 저장이며 링크 fragment를 사용합니다. 인증 전 계정 업로드·원격 전송·수락을 금지합니다. 이메일 정규화는 양끝 공백 제거와 도메인 소문자화이며 로컬 파트 대소문자·점·별칭은 보존합니다. ‘내 계정에 저장’은 기존 익명 접근권을 제거하고 계정 보관함으로 이동하며 원래 만료와 상대 접근권을 유지합니다.
|
||||
|
||||
최초 관리자 초기화는 `SETUP_TOKEN`(32자 이상 무작위 비밀값)과 빈 사용자 DB 조건으로만 가능합니다. `/api/auth/setup`도 이메일 인증을 거치며, 실제 메일 수신 검증 후 실행 절차를 완성합니다.
|
||||
최초 계정 초기화는 `SETUP_TOKEN`(32자 이상 무작위 비밀값)과 빈 사용자 DB 조건으로만 가능합니다. `/api/auth/setup`도 이메일 인증을 거칩니다. 서비스 관리 화면의 권한은 아래 관리자 계정 기준으로 별도 확인합니다.
|
||||
|
||||
## 서비스 관리
|
||||
|
||||
이메일 인증을 완료한 **hello@noname.company** 계정으로 로그인하면 **더보기 → 관리자**가 표시됩니다. 서버도 매 요청에서 동일 계정의 인증·활성 상태를 확인합니다. 다른 계정이나 이메일 로컬 파트의 대소문자가 다른 계정에는 권한을 주지 않습니다.
|
||||
|
||||
저장 파일·업로드 주체·최근 접속 지역/IP·남은 디스크와 진행 중 업로드를 확인하고, 확인 후 원본을 삭제할 수 있습니다. 삭제하면 같은 원본을 참조하는 모든 보관함 항목도 무효화됩니다. 파일 내용 다운로드 기능은 제공하지 않습니다. 화면은 새로고침할 때 갱신하며 지속적인 폴링은 하지 않습니다.
|
||||
|
||||
관리자는 신규 파일 업로드 중지/재개, 동시 업로드 수와 전체 파일 저장 한도, 국가 코드 및 IP/CIDR 차단을 설정할 수 있습니다. 기본값은 **동시 4개·전체 20GiB·차단 없음**입니다. 개인/기기별 한도와 최소 디스크 여유 공간은 함께 적용합니다. 중지 전에 수락한 전송·기존 다운로드·링크/텍스트는 유지합니다. 전체 한도를 줄여도 기존 파일은 삭제하지 않습니다.
|
||||
|
||||
국가와 IP 규칙은 HTTP·기기 연결에 적용하고, 규칙에 해당하는 진행 중 업로드와 연결도 종료합니다. IPv4·IPv6와 IP 대역을 지원하며 현재 관리자 접속을 차단하는 설정은 거절합니다. 국가는 검증된 Cloudflare 제공 값만 사용하고, 미제공 국가는 추정하지 않습니다. VPN·실제 거주지 추적은 하지 않습니다. 도시 정보 설정은 [배포 문서](deploy.md#전송-파일이-저장되는-곳과-정리-시점)를 참고하세요.
|
||||
|
||||
관리 설정은 DB에 저장되어 재시작 후 유지하며 `.env`는 초기 기본값으로 사용합니다. 설정 변경·원본 삭제 기록은 기본 30일 보관합니다. 이번 업데이트는 관리 테이블을 추가하는 마이그레이션을 자동 적용하며 기존 계정·파일·볼륨·`docker-compose.yaml`을 유지합니다. 앱의 자원 제한은 대규모 네트워크 공격을 모두 차단하지는 못하므로 외부 트래픽 대응은 Cloudflare 등 앞단 설정도 함께 사용합니다.
|
||||
|
||||
기술 참고: [Fastify 프록시 설정](https://fastify.dev/docs/latest/Reference/Server/), [Drizzle SQLite](https://orm.drizzle.team/docs/sqlite/get-started-sqlite), [Tailwind Vite](https://tailwindcss.com/docs/installation/using-vite).
|
||||
|
||||
## 현재 전송 UX
|
||||
|
||||
[파일·링크 통합 수정안](docs/TRANSFER_UX.md)을 우선합니다. 일반 텍스트 전송과 유형 탭은 제거했습니다. 기기를 누르면 클립보드 URL을 제안하며, 권한 거부나 일반 텍스트는 무시하고 파일 선택을 유지합니다. 링크 직접 붙여넣기도 가능합니다. 읽기만으로 전송하지 않으며 수락 후에만 전달합니다. 수신과 완료 카드는 뷰포트 상단에 표시됩니다. 기본 테마는 검정이며 라이트·시스템 전환을 유지합니다.
|
||||
[클립보드 전송 수정안](docs/CLIPBOARD_TRANSFER.md)을 따릅니다. 파일과 클립보드 중 하나를 선택하고 링크·일반 텍스트는 자동 판별합니다. 기기를 누르면 클립보드를 읽어 제안하며, 권한 거부 시에도 직접 입력할 수 있습니다. 입력 중인 내용을 자동으로 덮어쓰지 않으며 수락 후에만 전달합니다. 수신과 완료 카드는 뷰포트 상단에 표시됩니다. 기본 테마는 검정이며 라이트·시스템 전환을 유지합니다.
|
||||
|
||||
## 개발 테스트 계정
|
||||
|
||||
|
||||
Reference in New Issue
Block a user