upd: remove more traces of sensitiveMediaDetection
kept the api endpoint props just to stay compatible with clients that expect them to be there. they are unused and won't get saved
This commit is contained in:
parent
2eda00d9b9
commit
36c136cfd2
4 changed files with 2 additions and 115 deletions
|
@ -461,36 +461,12 @@ export class DriveService {
|
||||||
requestHeaders = null,
|
requestHeaders = null,
|
||||||
ext = null,
|
ext = null,
|
||||||
}: AddFileArgs): Promise<MiDriveFile> {
|
}: AddFileArgs): Promise<MiDriveFile> {
|
||||||
let skipNsfwCheck = false;
|
|
||||||
const instance = await this.metaService.fetch();
|
const instance = await this.metaService.fetch();
|
||||||
const userRoleNSFW = user && (await this.roleService.getUserPolicies(user.id)).alwaysMarkNsfw;
|
const userRoleNSFW = user && (await this.roleService.getUserPolicies(user.id)).alwaysMarkNsfw;
|
||||||
if (user == null) {
|
|
||||||
skipNsfwCheck = true;
|
|
||||||
} else if (userRoleNSFW) {
|
|
||||||
skipNsfwCheck = true;
|
|
||||||
}
|
|
||||||
if (instance.sensitiveMediaDetection === 'none') skipNsfwCheck = true;
|
|
||||||
if (user && instance.sensitiveMediaDetection === 'local' && this.userEntityService.isRemoteUser(user)) skipNsfwCheck = true;
|
|
||||||
if (user && instance.sensitiveMediaDetection === 'remote' && this.userEntityService.isLocalUser(user)) skipNsfwCheck = true;
|
|
||||||
|
|
||||||
const info = await this.fileInfoService.getFileInfo(path, {
|
const info = await this.fileInfoService.getFileInfo(path);
|
||||||
skipSensitiveDetection: skipNsfwCheck,
|
|
||||||
sensitiveThreshold: // 感度が高いほどしきい値は低くすることになる
|
|
||||||
instance.sensitiveMediaDetectionSensitivity === 'veryHigh' ? 0.1 :
|
|
||||||
instance.sensitiveMediaDetectionSensitivity === 'high' ? 0.3 :
|
|
||||||
instance.sensitiveMediaDetectionSensitivity === 'low' ? 0.7 :
|
|
||||||
instance.sensitiveMediaDetectionSensitivity === 'veryLow' ? 0.9 :
|
|
||||||
0.5,
|
|
||||||
sensitiveThresholdForPorn: 0.75,
|
|
||||||
enableSensitiveMediaDetectionForVideos: instance.enableSensitiveMediaDetectionForVideos,
|
|
||||||
});
|
|
||||||
this.registerLogger.info(`${JSON.stringify(info)}`);
|
this.registerLogger.info(`${JSON.stringify(info)}`);
|
||||||
|
|
||||||
// 現状 false positive が多すぎて実用に耐えない
|
|
||||||
//if (info.porn && instance.disallowUploadWhenPredictedAsPorn) {
|
|
||||||
// throw new IdentifiableError('282f77bf-5816-4f72-9264-aa14d8261a21', 'Detected as porn.');
|
|
||||||
//}
|
|
||||||
|
|
||||||
// detect name
|
// detect name
|
||||||
const detectedName = correctFilename(
|
const detectedName = correctFilename(
|
||||||
// DriveFile.nameは256文字, validateFileNameは200文字制限であるため、
|
// DriveFile.nameは256文字, validateFileNameは200文字制限であるため、
|
||||||
|
@ -586,7 +562,6 @@ export class DriveService {
|
||||||
: false;
|
: false;
|
||||||
|
|
||||||
if (info.sensitive && profile!.autoSensitive) file.isSensitive = true;
|
if (info.sensitive && profile!.autoSensitive) file.isSensitive = true;
|
||||||
if (info.sensitive && instance.setSensitiveFlagAutomatically) file.isSensitive = true;
|
|
||||||
if (userRoleNSFW) file.isSensitive = true;
|
if (userRoleNSFW) file.isSensitive = true;
|
||||||
|
|
||||||
if (url !== null) {
|
if (url !== null) {
|
||||||
|
|
|
@ -50,13 +50,7 @@ export class FileInfoService {
|
||||||
* Get file information
|
* Get file information
|
||||||
*/
|
*/
|
||||||
@bindThis
|
@bindThis
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
public async getFileInfo(path: string): Promise<FileInfo> {
|
||||||
public async getFileInfo(path: string, _opts: {
|
|
||||||
skipSensitiveDetection: boolean;
|
|
||||||
sensitiveThreshold?: number;
|
|
||||||
sensitiveThresholdForPorn?: number;
|
|
||||||
enableSensitiveMediaDetectionForVideos?: boolean;
|
|
||||||
}): Promise<FileInfo> {
|
|
||||||
const warnings = [] as string[];
|
const warnings = [] as string[];
|
||||||
|
|
||||||
const size = await this.getFileSize(path);
|
const size = await this.getFileSize(path);
|
||||||
|
|
|
@ -292,22 +292,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
set.turnstileSecretKey = ps.turnstileSecretKey;
|
set.turnstileSecretKey = ps.turnstileSecretKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ps.sensitiveMediaDetection !== undefined) {
|
|
||||||
set.sensitiveMediaDetection = ps.sensitiveMediaDetection;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ps.sensitiveMediaDetectionSensitivity !== undefined) {
|
|
||||||
set.sensitiveMediaDetectionSensitivity = ps.sensitiveMediaDetectionSensitivity;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ps.setSensitiveFlagAutomatically !== undefined) {
|
|
||||||
set.setSensitiveFlagAutomatically = ps.setSensitiveFlagAutomatically;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ps.enableSensitiveMediaDetectionForVideos !== undefined) {
|
|
||||||
set.enableSensitiveMediaDetectionForVideos = ps.enableSensitiveMediaDetectionForVideos;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ps.enableBotTrending !== undefined) {
|
if (ps.enableBotTrending !== undefined) {
|
||||||
set.enableBotTrending = ps.enableBotTrending;
|
set.enableBotTrending = ps.enableBotTrending;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,49 +20,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<XBotProtection/>
|
<XBotProtection/>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
|
||||||
<MkFolder>
|
|
||||||
<template #icon><i class="ph-eye-slash ph-bold ph-lg"></i></template>
|
|
||||||
<template #label>{{ i18n.ts.sensitiveMediaDetection }}</template>
|
|
||||||
<template v-if="sensitiveMediaDetection === 'all'" #suffix>{{ i18n.ts.all }}</template>
|
|
||||||
<template v-else-if="sensitiveMediaDetection === 'local'" #suffix>{{ i18n.ts.localOnly }}</template>
|
|
||||||
<template v-else-if="sensitiveMediaDetection === 'remote'" #suffix>{{ i18n.ts.remoteOnly }}</template>
|
|
||||||
<template v-else #suffix>{{ i18n.ts.none }}</template>
|
|
||||||
|
|
||||||
<div class="_gaps_m">
|
|
||||||
<span>{{ i18n.ts._sensitiveMediaDetection.description }}</span>
|
|
||||||
|
|
||||||
<MkRadios v-model="sensitiveMediaDetection">
|
|
||||||
<option value="none">{{ i18n.ts.none }}</option>
|
|
||||||
<option value="all">{{ i18n.ts.all }}</option>
|
|
||||||
<option value="local">{{ i18n.ts.localOnly }}</option>
|
|
||||||
<option value="remote">{{ i18n.ts.remoteOnly }}</option>
|
|
||||||
</MkRadios>
|
|
||||||
|
|
||||||
<MkRange v-model="sensitiveMediaDetectionSensitivity" :min="0" :max="4" :step="1" :textConverter="(v) => `${v + 1}`">
|
|
||||||
<template #label>{{ i18n.ts._sensitiveMediaDetection.sensitivity }}</template>
|
|
||||||
<template #caption>{{ i18n.ts._sensitiveMediaDetection.sensitivityDescription }}</template>
|
|
||||||
</MkRange>
|
|
||||||
|
|
||||||
<MkSwitch v-model="enableSensitiveMediaDetectionForVideos">
|
|
||||||
<template #label>{{ i18n.ts._sensitiveMediaDetection.analyzeVideos }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
|
|
||||||
<template #caption>{{ i18n.ts._sensitiveMediaDetection.analyzeVideosDescription }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
|
|
||||||
<MkSwitch v-model="setSensitiveFlagAutomatically">
|
|
||||||
<template #label>{{ i18n.ts._sensitiveMediaDetection.setSensitiveFlagAutomatically }} ({{ i18n.ts.notRecommended }})</template>
|
|
||||||
<template #caption>{{ i18n.ts._sensitiveMediaDetection.setSensitiveFlagAutomaticallyDescription }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
|
|
||||||
<!-- 現状 false positive が多すぎて実用に耐えない
|
|
||||||
<MkSwitch v-model="disallowUploadWhenPredictedAsPorn">
|
|
||||||
<template #label>{{ i18n.ts._sensitiveMediaDetection.disallowUploadWhenPredictedAsPorn }}</template>
|
|
||||||
</MkSwitch>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<MkButton primary @click="save"><i class="ph-floppy-disk ph-bold ph-lg"></i> {{ i18n.ts.save }}</MkButton>
|
|
||||||
</div>
|
|
||||||
</MkFolder>
|
|
||||||
|
|
||||||
<MkFolder>
|
<MkFolder>
|
||||||
<template #label>Active Email Validation</template>
|
<template #label>Active Email Validation</template>
|
||||||
<template v-if="enableActiveEmailValidation" #suffix>Enabled</template>
|
<template v-if="enableActiveEmailValidation" #suffix>Enabled</template>
|
||||||
|
@ -126,10 +83,6 @@ let summalyProxy: string = $ref('');
|
||||||
let enableHcaptcha: boolean = $ref(false);
|
let enableHcaptcha: boolean = $ref(false);
|
||||||
let enableRecaptcha: boolean = $ref(false);
|
let enableRecaptcha: boolean = $ref(false);
|
||||||
let enableTurnstile: boolean = $ref(false);
|
let enableTurnstile: boolean = $ref(false);
|
||||||
let sensitiveMediaDetection: string = $ref('none');
|
|
||||||
let sensitiveMediaDetectionSensitivity: number = $ref(0);
|
|
||||||
let setSensitiveFlagAutomatically: boolean = $ref(false);
|
|
||||||
let enableSensitiveMediaDetectionForVideos: boolean = $ref(false);
|
|
||||||
let enableIpLogging: boolean = $ref(false);
|
let enableIpLogging: boolean = $ref(false);
|
||||||
let enableActiveEmailValidation: boolean = $ref(false);
|
let enableActiveEmailValidation: boolean = $ref(false);
|
||||||
|
|
||||||
|
@ -139,15 +92,6 @@ async function init() {
|
||||||
enableHcaptcha = meta.enableHcaptcha;
|
enableHcaptcha = meta.enableHcaptcha;
|
||||||
enableRecaptcha = meta.enableRecaptcha;
|
enableRecaptcha = meta.enableRecaptcha;
|
||||||
enableTurnstile = meta.enableTurnstile;
|
enableTurnstile = meta.enableTurnstile;
|
||||||
sensitiveMediaDetection = meta.sensitiveMediaDetection;
|
|
||||||
sensitiveMediaDetectionSensitivity =
|
|
||||||
meta.sensitiveMediaDetectionSensitivity === 'veryLow' ? 0 :
|
|
||||||
meta.sensitiveMediaDetectionSensitivity === 'low' ? 1 :
|
|
||||||
meta.sensitiveMediaDetectionSensitivity === 'medium' ? 2 :
|
|
||||||
meta.sensitiveMediaDetectionSensitivity === 'high' ? 3 :
|
|
||||||
meta.sensitiveMediaDetectionSensitivity === 'veryHigh' ? 4 : 0;
|
|
||||||
setSensitiveFlagAutomatically = meta.setSensitiveFlagAutomatically;
|
|
||||||
enableSensitiveMediaDetectionForVideos = meta.enableSensitiveMediaDetectionForVideos;
|
|
||||||
enableIpLogging = meta.enableIpLogging;
|
enableIpLogging = meta.enableIpLogging;
|
||||||
enableActiveEmailValidation = meta.enableActiveEmailValidation;
|
enableActiveEmailValidation = meta.enableActiveEmailValidation;
|
||||||
}
|
}
|
||||||
|
@ -155,16 +99,6 @@ async function init() {
|
||||||
function save() {
|
function save() {
|
||||||
os.apiWithDialog('admin/update-meta', {
|
os.apiWithDialog('admin/update-meta', {
|
||||||
summalyProxy,
|
summalyProxy,
|
||||||
sensitiveMediaDetection,
|
|
||||||
sensitiveMediaDetectionSensitivity:
|
|
||||||
sensitiveMediaDetectionSensitivity === 0 ? 'veryLow' :
|
|
||||||
sensitiveMediaDetectionSensitivity === 1 ? 'low' :
|
|
||||||
sensitiveMediaDetectionSensitivity === 2 ? 'medium' :
|
|
||||||
sensitiveMediaDetectionSensitivity === 3 ? 'high' :
|
|
||||||
sensitiveMediaDetectionSensitivity === 4 ? 'veryHigh' :
|
|
||||||
0,
|
|
||||||
setSensitiveFlagAutomatically,
|
|
||||||
enableSensitiveMediaDetectionForVideos,
|
|
||||||
enableIpLogging,
|
enableIpLogging,
|
||||||
enableActiveEmailValidation,
|
enableActiveEmailValidation,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
Loading…
Reference in a new issue