NSFWJS 관련 핵심 설정은 editor.lib.php에서 정의되고, 실제 브라우저 실행 시에는 window.T2EDITOR_NSFW_* 전역 값으로 전달됩니다. 즉, PHP 상수와 브라우저 런타임 값이 둘 다 맞아야 정상 동작합니다.
파일 개요
- 핵심 파일:
9.1.0/t2editor/editor.lib.php - 관련 런타임 파일:
9.1.0/t2editor/config/nsfw_api_browser.js
이 문서는 “어떤 값을 어디서 바꾸면 되는가”를 정리한 운영 문서입니다.
초보자와 웹마스터를 위한 이해
이 기능은 크게 두 층으로 나뉩니다.
| 층 | 역할 |
|---|---|
| PHP 설정층 | 기본값 선언, URL 조립, JS 전역 설정 출력 |
| 브라우저 실행층 | 모델 로딩, 백엔드 선택, 이미지 판정 수행 |
그래서 파일만 복사해 넣고 끝나는 경우보다, 설치 경로와 URL 경로까지 정확히 맞추는 일이 더 중요합니다.
주요 설정값
T2_NSFW_ENABLED
phpdefine('T2_NSFW_ENABLED', true);
NSFW 필터 전체 사용 여부입니다.
true: 필터 활성화false: 필터 비활성화
T2_NSFW_MODE
phpdefine('T2_NSFW_MODE', 'browser');
판정 방식입니다.
| 값 | 의미 |
|---|---|
browser | 브라우저에서 NSFWJS로 판정 |
server | 서버 API 경로를 사용하는 레거시 또는 대체 방식 |
9.1.0에서는 browser를 기본 권장값으로 문서화하는 것이 맞습니다.
T2_NSFW_ALLOW_SUSPICIOUS
phpdefine('T2_NSFW_ALLOW_SUSPICIOUS', true);
safe가 아닌 결과 중 suspect 또는 unsafe를 어떻게 처리할지 결정하는 정책입니다.
true: 경고 후 업로드를 허용할 수 있음false: 정책상 업로드 취소 처리 가능
T2_NSFW_RUNTIME_ASSET_BASE
phpdefine('T2_NSFW_RUNTIME_ASSET_BASE', T2EDITOR_URL . '/vendor');
TensorFlow.js, 백엔드 스크립트, NSFWJS, 모델 파일의 루트 경로입니다.
이 값이 틀리면 아래 자산 경로도 모두 틀어질 수 있습니다.
T2_NSFW_BROWSER_MODEL
phpdefine('T2_NSFW_BROWSER_MODEL', 'MobileNetV2Mid');
브라우저에서 사용할 기본 모델 이름입니다.
T2_NSFW_BROWSER_MODEL_TYPE
phpdefine('T2_NSFW_BROWSER_MODEL_TYPE', 'graph');
모델 유형입니다. modelUrl로 직접 호스팅한 MobileNetV2Mid를 읽을 때는 문서와 코드가 모두 이 설정을 기준으로 움직이도록 맞춰 두는 편이 안전합니다.
T2_NSFW_BROWSER_MODEL_URL
phpdefine( 'T2_NSFW_BROWSER_MODEL_URL', T2_NSFW_RUNTIME_ASSET_BASE . '/nsfwjs/models/mobilenet_v2_mid/model.json' );
모델 파일의 실제 URL입니다. 브라우저는 결국 이 주소로 model.json을 요청합니다.
T2_NSFW_BROWSER_BACKEND_PRIORITY
phpdefine('T2_NSFW_BROWSER_BACKEND_PRIORITY', 'webgpu,webgl,wasm,cpu');
백엔드 우선순위입니다. 문자열로 선언해도 되고, JS 주입 시 배열로 변환하는 방식으로 다룰 수 있습니다.
브라우저 전역값으로 주입되는 항목
PHP 설정은 최종적으로 아래 값들로 변환되어 브라우저에 전달됩니다.
jswindow.T2EDITOR_NSFW_ENABLED window.T2EDITOR_NSFW_MODE window.T2EDITOR_NSFW_ALLOW_SUSPICIOUS window.T2EDITOR_NSFW_SERVER_URL window.T2EDITOR_NSFW_BROWSER_URL window.T2EDITOR_NSFW_BROWSER_MODEL window.T2EDITOR_NSFW_BROWSER_MODEL_TYPE window.T2EDITOR_NSFW_BROWSER_MODEL_URL window.T2EDITOR_NSFW_BROWSER_BACKEND_PRIORITY window.T2EDITOR_NSFW_RUNTIME_ASSETS
즉 editor.lib.php를 수정했다면, 실제 렌더링된 페이지 소스나 브라우저 콘솔에서 저 값이 제대로 주입됐는지 꼭 확인해야 합니다.
설치 경로가 바뀔 때 가장 먼저 볼 것
예를 들어 에디터가 아래 경로에 설치됐다면
text/var/www/html/plugin/editor/t2editor/
웹 경로는 보통 아래처럼 맞춰야 합니다.
phpdefine('T2EDITOR_URL', '/plugin/editor/t2editor');
그 다음에야 T2_NSFW_RUNTIME_ASSET_BASE와 T2_NSFW_BROWSER_MODEL_URL이 올바른 URL을 만들 수 있습니다.
운영 체크리스트
| 항목 | 확인 내용 |
|---|---|
| 정적 파일 응답 | vendor/ 아래 JS, WASM, model.json이 200 응답인지 확인 |
| 전역 설정 주입 | window.T2EDITOR_NSFW_* 값이 기대값과 같은지 확인 |
| 모드 확인 | browser 모드인지 확인 |
| 모델 타입 | graph가 필요한 배포인지 확인 |
| 백엔드 선택 | 콘솔에서 실제 선택된 백엔드가 기대와 비슷한지 확인 |
경로를 바꿨다면 캐시를 먼저 의심하기 쉽지만, 실제 원인은 T2EDITOR_URL과 T2_NSFW_RUNTIME_ASSET_BASE 불일치인 경우가 많습니다.
수정 요약
9.1.0 설정 문서 관점에서 중요한 변경점은 다음과 같습니다.
- 브라우저 NSFW 엔진을 위한 별도 모델/자산 설정 추가
- WebGPU 우선순위를 제어하는 설정 추가
- self-hosted vendor 경로를 1급 설정값으로 승격
- 브라우저 전역 설정 주입 항목 확대