JJ_MKVMaker/lib/app/settings/tor_settings.dart

45 lines
1.8 KiB
Dart

import 'settings_group.dart';
/// 약속 (설정 A): 환경 설정 > Tor 釉뚮씪?곗? (?ъ슜???붿껌 10/10) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다.
/// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키)
class TorBrowserSettings implements SettingsGroup {
/// Tor 화면의 쿠키 · 기록 · 캐시를 닫은 뒤에도 남기기 (기본: 닫으면 지움)
bool keepData = false;
/// Tor 화면을 떠난 뒤 tor 를 몇 분 더 켜 둘지 (0 = 바로 끔, 처음 2분 - 관리자 결정 10/11). 웹 뷰 · 다리 · 프록시는 늘 바로 정리
int idleMinutes = 2;
/// Tor 화면의 처음 · 🏠 주소
String homeUrl = defaultHome;
static const defaultHome = 'https://check.torproject.org/';
/// Tor 화면의 JavaScript (끄면 더 안전하지만 많은 사이트가 보이지 않음)
bool javaScript = true;
/// "공식 Tor Browser 가 아닙니다" 안내를 보았는지 (처음 열 때 한 번)
bool noticeSeen = false;
@override
void write(Map<String, Object?> j, {required bool plainSecrets}) {
j['torKeepData'] = keepData;
j['torIdleMinutes'] = idleMinutes;
j['torHomeUrl'] = homeUrl;
j['torJavaScript'] = javaScript;
j['torNoticeSeen'] = noticeSeen;
}
@override
void read(Map<String, dynamic> j) {
keepData = j['torKeepData'] == true;
idleMinutes = j['torIdleMinutes'] is int && (j['torIdleMinutes'] as int) >= 0 && (j['torIdleMinutes'] as int) <= 60
? j['torIdleMinutes'] as int
: 2;
homeUrl = j['torHomeUrl'] is String && (j['torHomeUrl'] as String).trim().isNotEmpty
? (j['torHomeUrl'] as String).trim()
: defaultHome;
javaScript = j['torJavaScript'] != false;
noticeSeen = j['torNoticeSeen'] == true;
}
}