JJ_MKVMaker/tool
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
..
l10n 화면 글자 검사기가 놓치던 것 잡기 · 찾은 번역 빠짐 고치기 (60) 2026-10-10 01:39:33 +09:00
licenses Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
build_7zz_android.sh WIP 86 Android: 7-Zip 25.01 을 공식 소스에서 NDK 로 빌드 (lib7zz.so) - Android 에서도 7z · RAR 풀기 (검토 대기) 2026-10-17 15:17:01 +09:00
build_launcher.ps1 v2026.10.01_002: 배포 폴더 구조 (맨 위 3개 파일 + Lib + Logs) 2026-10-01 13:49:50 +09:00
build_rsync_android.sh 폴더 선택 = 자기 자신과 안의 것 전체 · rsync 앱에 내장 (Windows · Android) 2026-10-05 13:57:59 +09:00
build_sdcpp_android.sh ARMv8.0 기기용 AI 엔진 · 신호별 문구 · 받기 전 검사 · APK 네이티브 목록 (195) 2026-10-11 21:39:50 +09:00
check_apk.ps1 WIP 86 Android: 7-Zip 25.01 을 공식 소스에서 NDK 로 빌드 (lib7zz.so) - Android 에서도 7z · RAR 풀기 (검토 대기) 2026-10-17 15:17:01 +09:00
check_onnx_external.py Android: 백그라운드 작업 · 상태 표시줄 · H.264 우선 · AI 번역 메모리 (4GB 기기에서 앱이 꺼지던 문제) 2026-10-02 23:17:30 +09:00
check_windows_build.ps1 WIP Windows 시험판 판 번호: 시험판은 시험 번호 (--build-number 년월일+순번) · make_zip 에 검사 (관리자 지시) (검토 대기) 2026-10-17 22:06:48 +09:00
fetch_7zip.ps1 WIP 86 압축: ZIP 만들기 · 풀기, 7z · RAR 풀기 (Windows - 7-Zip 25.01 동봉), 풀기 전 검사 + 품질 올리기 다듬기 정도 설정 (검토 대기) 2026-10-17 14:38:26 +09:00
fetch_ffmpeg.ps1 테스트 · 도구의 작업 폴더 경로: M:\jj_CapCut → M:\jj_MKVMaker 2026-10-05 00:00:34 +09:00
fetch_rsync.ps1 폴더 선택 = 자기 자신과 안의 것 전체 · rsync 앱에 내장 (Windows · Android) 2026-10-05 13:57:59 +09:00
fetch_tools.ps1 JJ_MKVMaker v1.0.0 2026-09-30 19:35:19 +09:00
fetch_tor_android.ps1 Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
make_icon.py 노란 앱 아이콘 (노랑·검정 두 색) 추가 및 환경 설정에서 앱 아이콘 고르기 2026-10-04 23:47:00 +09:00
make_layout.ps1 릴리스 전: 가짜 AI 결과 막기 · S10 해상도 속도 · 예상 시간 (156-2) · 라이선스 (64) · zip 실행 흔적 검사 (166) 2026-10-09 17:11:31 +09:00
make_zip.ps1 WIP Windows 시험판 판 번호: 시험판은 시험 번호 (--build-number 년월일+순번) · make_zip 에 검사 (관리자 지시) (검토 대기) 2026-10-17 22:06:48 +09:00
next_version.ps1 v2026.09.30_001: 일괄 작업, 다운로드 진행률 · 쿠키 재시도, 상태 표시 2026-09-30 21:31:07 +09:00
sftp_test_server.py WIP 88 SFTP 1/3: 핵심 (dartssh2) - sftp:// 경로 · 서버 설정 · 안전 저장소 · 처음 키 확인 (TOFU) · 오래된 ssh-rsa · 시험 서버 (미완) 2026-10-17 22:11:07 +09:00
test_temp_check.ps1 WIP 관리자 결정: 거절 기록은 방식 주소:포트만 · DoH 주소는 호스트만 · 시험 임시 폴더 흔적 0 + 검사 (검토 대기) 2026-10-17 16:53:56 +09:00