Commit Graph

4 Commits (e5a115d45012338eb36a30a1f9adcd5c7e1f9b04)

Author SHA1 Message Date
RyuJongJin e5a115d450 WIP 88 SMB 3/3: Android SMB (smbj 0.15.0, 플랫폼 채널) - 서버 설정 · 탭 · 받아서 열기 · 고지 (미완 - 기기 확인 안 됨)
사용자 결정 88-1 (Windows 는 운영체제 그대로) · 88-4 (SMB3 암호화는 허용 + 안 되면 경고) 대로 Android 만.
- android/.../SmbBridge.kt (채널 jj_mkvmaker/smb, 뒤 스레드): smbj (SMB2 · SMB3, SMB1 없음) · Bouncy Castle 보안 제공자
  (Android 기본에는 NTLM 의 MD4 가 없음) · 암호화 요청 (withEncryptData). 서버마다 연결 하나를 다시 씀, 파일은 손잡이로 1MB 조각.
  오류를 종류로 (auth · unreachable · noShare · smb1 · permission · notFound). R8 keep 규칙 (smbj · mbassador · bouncycastle).
- lib/core/smb.dart: SmbServer (비밀번호는 안전 저장소 smb.pw.<id> 에만) · SmbRemote (RemoteClient) · SmbRegistry.
  저장된 비밀번호 없음은 서버에 묻지 않고 알림, 게스트 (아이디 없음) 허용, info() 로 암호화 여부.
- vfs: smb:// 를 같은 원격 길로 (🗄), 재생 · 다른 앱은 받아서 (noStreamUrl = SFTP · SMB).
- 화면: 환경 설정 > 파일 탐색기 > SMB (Android 만) - 서버 · 포트 · 공유 · 시작 폴더 · 아이디 (비우면 게스트) · 비밀번호 · 도메인,
  [연결 확인] 에서 암호화 안 되면 경고. 탐색기 탭 · ⋮ 메뉴 [SMB 서버 추가] · 탭 길게 누르기 = 고치기 · 폴더 고르는 곳.
  179 바꿈: Android 에서 smb:// · \서버\공유 를 넣으면 "SMB 서버 추가로 넣으면 탭으로" 안내와 [SMB 서버 추가] (넣은 주소로 채움) · [WebDAV 서버 추가].
- 최상 · 마스터 초기화의 저장된 비밀번호 지우기에 SMB 도.
- 라이선스: SMBJ_LICENSES.txt (smbj LICENSE_HEADER · Bouncy Castle · SLF4J · MBassador 원문 + Apache 2.0 전문, smbj 는 NOTICE 파일이 없음),
  라이선스 화면 · Android 고지, 판이 바뀌면 시험이 알림.
- 시험: smb_test (가짜 채널 - 1MB 조각 쓰기 · 읽기 · 목록 · 이름 바꾸기 · 지우기 · 시작 폴더 · 오류 글 · 저장된 비밀번호 없음 · 설정 · 주소 풀기),
  179 시험 고침. 전체 837 통과 · 17 건너뜀, 새로 남은 임시 폴더 0. APK 빌드 (Kotlin 컴파일 · R8) 통과.
- 시험이 잡은 버그: 큰 조각 하나가 오면 1MB 로 나누지 않고 통째로 보냈다 → 나눔.
- 미완: 실제 smbj 연결 (Android 기기 + SMB 서버) 은 확인하지 못함 - 노트 10+ 등에서 PC 공유 폴더로 확인 필요.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:55:59 +09:00
RyuJongJin d00df74257 WIP 최상 · 마스터 초기화 "저장된 비밀번호 · API 키" 가 AI 서비스 API 키도 지우게 (버그, 관리자 결정) (검토 대기)
관리자 결정 (10/17): 문구는 "비밀번호 · API 키" 인데 AI 서비스 API 키 (ai.*) 는 남았다 (예전부터) → 함께 지운다.
SFTP 비밀 값 (비밀번호 · 개인 키 · 키 암호) 은 88 1/3 에서 이미 넣음. 목록 · 아이디 · 주소 · 믿은 서버 키는 남김.
시험: 실제 SettingsStore + 메모리 안전 저장소로 os. · dav. · sftp. · ai. 값 7개를 넣고 지운 뒤 하나도 없음.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:32:14 +09:00
RyuJongJin b5918b7aa2 WIP 88 SFTP 1/3: 핵심 (dartssh2) - sftp:// 경로 · 서버 설정 · 안전 저장소 · 처음 키 확인 (TOFU) · 오래된 ssh-rsa · 시험 서버 (미완)
사용자 "진행" (10/17, 관리자 3a 전달) - 88 설계안의 제안값:
1) Windows SMB 는 운영체제 그대로 2) 키 암호는 안전 저장소 3) ssh-rsa 기본 끔 · 서버마다 켬 4) SMB3 암호화 (SMB 때) 5) 서버 rsync 는 다음 판.

이 커밋 (화면은 아직 없음 - 설정 화면 · 탐색기 탭은 다음 커밋):
- lib/core/remote_fs.dart: 원격 저장소 공통 동작 (RemoteClient). WebDAV (DavClient) 도 이것으로.
- lib/core/sftp.dart: SftpServer (설정, 비밀 값은 toJson 에 없음) · SftpRemote (dartssh2, 서버마다 연결 하나를 다시 씀) · SftpRegistry.
  - 호스트 키: 믿은 지문이 없으면 연결하지 않고 지문 (SHA256:…) 을 알림 (SftpHostKeyException) → 화면이 묻고 저장.
    바뀌면 막고 예전 · 지금 지문을 알림 (중간자 공격 안내).
  - 비밀번호 · keyboard-interactive · 개인 키 (암호), 키 암호 틀림 · 키를 못 읽음 · 저장된 비밀번호 없음 · 닿지 않음 · 권한 · 없는 경로를 사람 말로.
  - 오래된 서버: 처음엔 SHA-1 을 쓰지 않고 "오래된 ssh-rsa 허용" 을 안내, 서버마다 켜면 ssh-rsa · SHA-1 키 교환.
  - DNS 강제를 따라 직접 연결 (집 안 이름 · 주소는 기기 DNS), 시작 폴더 (비우면 홈).
  - 소켓 끊김의 쓰기 실패가 처리되지 않은 오류로 올라오지 않게.
- vfs: sftp:// 를 dav:// 와 같은 원격 길로 (isDav = 원격, isWebDav · isSftp 따로). 화면 "🔑 서버/경로", 받아서 열기는 jj_sftp.
- 설정: sftpServers (비밀번호 · 개인 키 · 키 암호는 안전 저장소 sftp.pw/key/kp.<id> 에만, 평문 파일에 쓰지 않음), .bak · 깨진 파일 가림,
  최상 비밀번호 초기화의 "저장된 비밀번호 지우기" 에 SFTP 도.
- 재생 · 다른 앱: SFTP 는 스트리밍 주소가 없어 고른 파일만 받아서 (진행 · 취소) 틀고 같은 폴더 자막도 받음 (다음 파일로 넘어가지 않음 - 1차).
- 시험: test/sftp_test.dart 7개 (설정 · 경로 + paramiko 시험 서버: TOFU · 바뀐 키 · 틀린 비밀번호 · 닿지 않음 · vfs 전체 · 키 로그인 · ssh-rsa).
  tool/sftp_test_server.py (paramiko 3.5.1 - 5.0 은 SHA-1 을 뺌), venv 는 ..\tools\sftp_test_py (없으면 건너뜀).
- 라이선스 고지 · 화면 · Android SMB 는 다음 커밋.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:11:07 +09:00
RyuJongJin 70056b0db3 보안 · 비밀번호 (124 · 127~132) · 쿠키 (53) · http 경고 (56) · 안내 고침 (116 · 125 · 126) · 시험 안정화
- 124: 최상 · 마스터 비밀번호 (솔트 PBKDF2-HMAC-SHA256, 안전 저장소에 해시만), 묻는 때 (안전 저장소),
  저장된 비밀번호를 쓰는 곳의 문 (WebDAV · OpenSubtitles · 재생 · 환경 설정), 최상으로 초기화 · 잊었을 때 초기화,
  틀리면 기다리기, 서버 지우기 전 쓰는 곳 알림, 실시간 동기화 폴더에 WebDAV 고르기
- 127: 서버 고치기 창은 마스터 뒤에 (저장된 비밀번호가 보이지 않게)
- 128: 마스터 창은 하나로 · 취소하면 배경 작업은 묻지 않고 "기다리는 중" 으로 표시
- 129: 묻는 때를 설정 파일이 아니라 안전 저장소에 (값이 없거나 틀리면 쓸 때 묻기)
- 130: Windows secrets.dat 를 쓰기 · 지우기 전에 다시 읽어 다른 창의 값과 합침
- 131: 앱 안 브라우저 쿠키를 쓰지 않게 바꾸면 내보낸 쿠키 파일을 지움
- 132: 최상 비밀번호 [끄기] 가 넓은 화면에서 잘리지 않게
- 53: 쿠키 파일 안내 · 넘길 사이트 고르기 · 쿠키 · 방문 기록 지우기 · 범위 넓힘 알림
- 56: http:// WebDAV 경고 · 인증서 확인 끄기가 다른 재생에 남지 않게
- 116 · 125 · 126: 권한 안내 다시 · "2-1 / 3장" · 바뀐 기본 설정 창을 닫으면 바로 저장
- 시험판 데이터 폴더 (JJ_MKVMAKER_DATA, Windows) · 휴지통 판정을 $I 정보로 · 모니터링 시험 기다림

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:22:47 +09:00