JJ_MKVMaker/lib/ui
RyuJongJin 0d1ea93fd3 Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4)
사용자 요청 (10/10): "Tor 브라우저를 현재 브라우저 옆에 추가 · 설정에서 컴포넌트처럼 추가 ·
DNS 주소를 강제로 내가 설정한 주소로, 기본 8.8.8.8" (보조 8.8.4.4 는 관리자 결정).

DNS 강제 (환경 설정 > 네트워크 · DNS: 시스템 DNS (끄기) / 직접 지정 (기본) / DNS over HTTPS)
- 앱 안 HTTP 프록시 (127.0.0.1, CONNECT + http) 가 정한 서버로 이름을 푼다 (UDP, 잘리면 TCP, DoH,
  TTL 동안 기억). 닿지 않으면 기기 DNS 로 몰래 바꾸지 않고 502 + 알림 [시스템 DNS 로 바꾸기].
- 따르는 것: 앱의 HttpClient (HttpOverrides: 업데이트 · 컴포넌트 · AI 모델 · WebDAV · 번역 · 자막),
  Edge (--proxy-server) · Chrome 엔진 (webview_cef 패치 6), Android 웹 뷰 (ProxyController),
  yt-dlp --proxy, aria2 --all-proxy (+ c-ares 가 있으면 --async-dns-server).
- IP 주소 · 같은 집 안 이름 (점 없는 이름, *.local, Tailscale *.ts.net 등) 은 기기 DNS (내 판단: NAS · WebDAV 가 그대로 열리게).

Tor 브라우저 (컴포넌트 'tor', 처음 꺼짐, 화면은 웹 브라우저 바로 뒤)
- Windows: 공식 Tor Expert Bundle 15.0.24 (tor 0.4.9.13) 을 받아 SHA-256 확인
  (e9dc6ccc…2b65) → 앱 데이터 components/tor. Android: 같은 판의 libTor.so 를 APK 에 (tool/fetch_tor_android.ps1).
- tor 를 자식 프로세스로 (SOCKS · 제어 포트는 빈 포트, 쿠키 인증, __OwningControllerProcess), Tor 화면을 닫으면 끔.
- 웹 뷰 → Tor 다리 (HTTP 프록시 → SOCKS5, 이름은 Tor 에 넘김). Tor 100% · 프록시 적용 · 전용 프로필이
  모두 된 뒤에만 웹 뷰를 만든다. WebRTC 끔, 권한 거절, 검색은 DuckDuckGo.
- Windows: 따로 WebView2 환경 (tor_webview, InPrivate). Android: 웹 뷰 프록시가 앱 전체라 Tor 화면이
  열려 있는 동안 일반 브라우저도 Tor (안내 띠, 관리자 결정), androidx.webkit 프로필 'jj_tor'
  (flutter_inappwebview_android 패치 jjProfile). 기능이 없으면 화면을 열지 않음.
- 상태 줄 (연결 중 % / 연결됨 / 실패 + 다시 시도), [새 경로] (NEWNYM), 처음 열 때 "공식 Tor Browser 아님" 안내.
- 라이선스: TOR_LICENSES.txt (Tor BSD-3 · Libevent · OpenSSL · zlib · zstd), tor 실행 파일은 GPL 빌드 → GPL-3.0.

시험: dns_proxy_test (가짜 DNS · 프록시 · SOCKS 다리), tor_test (새는 것 막기 · 번들 해시 · torrc),
integration_test/tor_dns_real_test (Windows 실제: 8.8.8.8 로 풀기, 닿지 않는 DNS 는 실패,
check.torproject.org "Congratulations").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:10:17 +09:00
..
ai_dialog.dart [MKV 만들기] 와 AI 버튼 구별 · AI 작업 전에 계획 보이기 (138) 2026-10-10 03:12:14 +09:00
ai_image_page.dart 라이선스 고지 (62 · 63 · 64) · AI 릴리스 전 수정 (152 · 156 · 157 · 159) 2026-10-09 16:20:15 +09:00
ai_settings.dart 화면 글자 검사기가 놓치던 것 잡기 · 찾은 번역 빠짐 고치기 (60) 2026-10-10 01:39:33 +09:00
ai_upscale_ui.dart AI 해상도 올리기 [이 장] 도 작업으로 · 큰 그림은 메모리에 맞는 타일 (176) 2026-10-10 06:14:10 +09:00
all_files_guide.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
android_file_browser.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
app_actions.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
app_drop.dart 화면 언어: 한국어 · English · 日本語 · 简体中文, 언어 추가 (AI 자동 번역) · 삭제, 바꾸면 화면 전체가 바로 그 언어로 2026-10-04 14:13:02 +09:00
bookmark_ui.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
browser_page.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
cef_setup.dart 좁은 화면 (접은 폴드 · 휴대폰 세로) 배치 정리 2026-10-08 14:10:04 +09:00
cleanup_dialog.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
component_settings.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
confirm.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
copy_sync_settings.dart 48 보충: 탐색기를 처음 열면 고른 항목 없음 · 같은 이름 처리 기본값을 환경 설정으로 2026-10-09 18:57:50 +09:00
dav_external.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
downloads_page.dart 실패한 다운로드 줄을 쉬운 말로 (136): 진행 막대 대신 실패 · 이유 · [자세히] · [다시 시도] 2026-10-10 02:52:57 +09:00
encode_notice.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
exit_dialog.dart 화면 언어: 한국어 · English · 日本語 · 简体中文, 언어 추가 (AI 자동 번역) · 삭제, 바꾸면 화면 전체가 바로 그 언어로 2026-10-04 14:13:02 +09:00
exit_guard.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
explorer_look.dart 파일 탐색기: 폴더 한 번 누르기 = 펼치기, 선택 모드 (X-plore 처럼) 2026-10-05 09:43:28 +09:00
explorer_page.dart 원본 지우기 옵션: 확인 창에 보이는 것과 실제 실행을 같게 (178, 데이터) 2026-10-10 06:14:11 +09:00
file_error.dart 오류 메시지 안쪽을 화면 언어로 (59) 2026-10-10 01:11:17 +09:00
folder_picker.dart AI 그림 1차 (123) · WebDAV 안내 (133 · 134 · 142 · 143) · 긴 경로 휴지통 보호 · AI 화면 작은 것 (139 · 140 · 141) 2026-10-09 14:35:57 +09:00
home_page.dart [MKV 만들기] 와 AI 버튼 구별 · AI 작업 전에 계획 보이기 (138) 2026-10-10 03:12:14 +09:00
language_settings.dart 라이선스 원문 (175): 네이티브 구성 요소 · 받는 AI 모델의 저작권 줄과 허가 문구를 그 판 그대로 2026-10-10 00:29:19 +09:00
license_texts.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
master_prompt.dart 보안 · 비밀번호 (124 · 127~132) · 쿠키 (53) · http 경고 (56) · 안내 고침 (116 · 125 · 126) · 시험 안정화 2026-10-09 12:22:47 +09:00
migration_notice.dart AI 그림 1차 (123) · WebDAV 안내 (133 · 134 · 142 · 143) · 긴 경로 휴지통 보호 · AI 화면 작은 것 (139 · 140 · 141) 2026-10-09 14:35:57 +09:00
monitor_page.dart 원본 지우기 옵션: 확인 창에 보이는 것과 실제 실행을 같게 (178, 데이터) 2026-10-10 06:14:11 +09:00
network_settings.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
path_label.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
player_page.dart 다국어 작은 것들 (61) 2026-10-10 02:29:58 +09:00
reader_page.dart AI 해상도 올리기 (121) · AI 마무리 (150~153) · 받기 범위 확인 · 확인됨 표시 2026-10-09 15:31:13 +09:00
rsync_setup.dart 좁은 화면 (접은 폴드 · 휴대폰 세로) 배치 정리 2026-10-08 14:10:04 +09:00
schedule_editor.dart 복사 모니터링 · 복사 기억 · lsync 일정 (cron + 격자 편집) 2026-10-05 11:16:05 +09:00
secret_issue.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
security_settings.dart 보안 · 비밀번호 (124 · 127~132) · 쿠키 (53) · http 경고 (56) · 안내 고침 (116 · 125 · 126) · 시험 안정화 2026-10-09 12:22:47 +09:00
setting_tile.dart 좁은 화면 (접은 폴드 · 휴대폰 세로) 배치 정리 2026-10-08 14:10:04 +09:00
settings_page.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
settings_problem.dart 설정 파일: 안전하게 저장 · 깨지면 백업으로 되살리고 알림 2026-10-08 23:54:30 +09:00
setup_dialog.dart 좁은 화면 (접은 폴드 · 휴대폰 세로) 배치 정리 2026-10-08 14:10:04 +09:00
subtitle_editor_page.dart 좁은 화면 (접은 폴드 · 휴대폰 세로) 배치 정리 2026-10-08 14:10:04 +09:00
subtitle_language_picker.dart 환경 설정 > MKV 만들기 > 기본 자막 언어 (MKV 기본 자막 트랙 · 플레이어가 먼저 켜는 자막) 2026-10-10 02:41:14 +09:00
subtitle_search_dialog.dart 보안 · 비밀번호 (124 · 127~132) · 쿠키 (53) · http 경고 (56) · 안내 고침 (116 · 125 · 126) · 시험 안정화 2026-10-09 12:22:47 +09:00
sync_alert.dart 보안 · 비밀번호 (124 · 127~132) · 쿠키 (53) · http 경고 (56) · 안내 고침 (116 · 125 · 126) · 시험 안정화 2026-10-09 12:22:47 +09:00
sync_preview_view.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
theme.dart 66-2 화면 옮기기: 지금 화면 아이콘 파랗게 · 민 쪽으로 미끄러지는 전환 · 처음으로 / 끝 알림 · 브라우저 안내 한 줄 (한 번) 2026-10-09 20:16:08 +09:00
timeline.dart 화면 언어: 한국어 · English · 日本語 · 简体中文, 언어 추가 (AI 자동 번역) · 삭제, 바꾸면 화면 전체가 바로 그 언어로 2026-10-04 14:13:02 +09:00
toast_status.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
tor_page.dart Tor 브라우저 (컴포넌트) · DNS 강제 (기본 8.8.8.8 / 8.8.4.4) 2026-10-10 21:10:17 +09:00
translate_dialog.dart 라이선스 원문 (175): 네이티브 구성 요소 · 받는 AI 모델의 저작권 줄과 허가 문구를 그 판 그대로 2026-10-10 00:29:19 +09:00
update_dialog.dart 버전 고르기 창: 좁은 화면에서는 목록 위 · 바뀐 내용 아래 (168) 2026-10-10 04:11:33 +09:00
version_restore.dart P0 Android 되돌리기: 남는 것 / 사라지는 것을 사실대로 · 두 번 확인 · 받은 AI 모델 복사해 두었다가 되살리기 2026-10-09 18:03:47 +09:00
video_adjust_dialog.dart 비밀번호 안전 저장 · 동기화 안전장치 · 휴지통 · 시작 메뉴 알림 · 보기 화면 (계속 보기 · 두 쪽 · 회전) · 탐색기 배치 등 2026-10-09 10:25:08 +09:00
webdav_settings.dart AI 그림 1차 (123) · WebDAV 안내 (133 · 134 · 142 · 143) · 긴 경로 휴지통 보호 · AI 화면 작은 것 (139 · 140 · 141) 2026-10-09 14:35:57 +09:00
work_panel.dart AI 해상도 올리기 [이 장] 도 작업으로 · 큰 그림은 메모리에 맞는 타일 (176) 2026-10-10 06:14:10 +09:00
zip_page.dart 이미지 · PDF · ZIP 보기 (컴포넌트 "viewer") 2026-10-08 15:24:47 +09:00