Update main.js
This commit is contained in:
parent
f06286ff81
commit
4de460bddf
|
@ -253,11 +253,12 @@ async function handleReceivedFile(file) {
|
||||||
// Verifica se é uma imagem ou vídeo
|
// Verifica se é uma imagem ou vídeo
|
||||||
if (file.type.startsWith('image/') || file.type.startsWith('video/')) {
|
if (file.type.startsWith('image/') || file.type.startsWith('video/')) {
|
||||||
console.log('Verificando conteúdo NSFW...');
|
console.log('Verificando conteúdo NSFW...');
|
||||||
const isNSFW = await contentModeration.checkNSFW(file);
|
const nsfwResult = await contentModeration.checkNSFW(file);
|
||||||
console.log('Resultado NSFW:', isNSFW);
|
console.log('Resultado NSFW:', nsfwResult);
|
||||||
|
|
||||||
if (isNSFW) {
|
if (nsfwResult.isNSFW) {
|
||||||
console.log('Conteúdo explícito detectado, mostrando aviso...');
|
console.log('Conteúdo explícito detectado, mostrando aviso...');
|
||||||
|
|
||||||
// Cria elemento borrado
|
// Cria elemento borrado
|
||||||
const mediaElement = document.createElement(file.type.startsWith('image/') ? 'img' : 'video');
|
const mediaElement = document.createElement(file.type.startsWith('image/') ? 'img' : 'video');
|
||||||
mediaElement.className = 'media-preview blurred-content';
|
mediaElement.className = 'media-preview blurred-content';
|
||||||
|
@ -280,23 +281,72 @@ async function handleReceivedFile(file) {
|
||||||
const hasOffensiveWords = contentModeration.hasBlockedWordsWithSubstitutions(file.name);
|
const hasOffensiveWords = contentModeration.hasBlockedWordsWithSubstitutions(file.name);
|
||||||
|
|
||||||
if (spamCheck.isSpam || hasOffensiveWords) {
|
if (spamCheck.isSpam || hasOffensiveWords) {
|
||||||
console.log('Nome do arquivo contém conteúdo impróprio');
|
console.log('Conteúdo potencialmente perigoso detectado');
|
||||||
const contentType = hasOffensiveWords ? 'offensive' : 'spam';
|
const shouldView = await contentModeration.showWarningDialog(file, spamCheck.contentType || 'spam');
|
||||||
const shouldView = await contentModeration.showWarningDialog(file, contentType);
|
|
||||||
if (!shouldView) {
|
if (!shouldView) {
|
||||||
console.log('Usuário recusou visualizar o arquivo');
|
console.log('Usuário recusou visualizar o conteúdo');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Se chegou aqui, processa o arquivo normalmente
|
// Verifica URLs no conteúdo
|
||||||
console.log('Processando arquivo normalmente');
|
if (file.type === 'text/plain') {
|
||||||
processFile(file);
|
const text = await file.text();
|
||||||
|
const urlRegex = /https?:\/\/[^\s]+/g;
|
||||||
|
const urls = text.match(urlRegex) || [];
|
||||||
|
|
||||||
|
for (const url of urls) {
|
||||||
|
const isSuspicious = await contentModeration.checkUrl(url);
|
||||||
|
if (isSuspicious) {
|
||||||
|
console.log('URL suspeita detectada:', url);
|
||||||
|
const shouldView = await contentModeration.showWarningDialog(file, 'scam');
|
||||||
|
if (!shouldView) {
|
||||||
|
console.log('Usuário recusou visualizar o conteúdo');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Processa o arquivo normalmente
|
||||||
|
return file;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Erro ao processar arquivo:', error);
|
console.error('Erro ao processar arquivo:', error);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Intercepta o WebRTC para verificar arquivos antes do compartilhamento
|
||||||
|
function interceptWebRTC() {
|
||||||
|
const originalPeerConnection = window.RTCPeerConnection;
|
||||||
|
window.RTCPeerConnection = function(...args) {
|
||||||
|
const pc = new originalPeerConnection(...args);
|
||||||
|
|
||||||
|
// Intercepta o método de envio de dados
|
||||||
|
const originalSend = pc.send;
|
||||||
|
pc.send = async function(data) {
|
||||||
|
if (data instanceof Blob || data instanceof File) {
|
||||||
|
try {
|
||||||
|
const processedFile = await handleReceivedFile(data);
|
||||||
|
if (!processedFile) {
|
||||||
|
throw new Error('Arquivo bloqueado pelo sistema de moderação');
|
||||||
|
}
|
||||||
|
return originalSend.call(this, processedFile);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro ao processar arquivo:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return originalSend.call(this, data);
|
||||||
|
};
|
||||||
|
|
||||||
|
return pc;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inicializa a interceptação do WebRTC
|
||||||
|
interceptWebRTC();
|
||||||
|
|
||||||
// Função para processar mensagens recebidas
|
// Função para processar mensagens recebidas
|
||||||
function handleReceivedMessage(message) {
|
function handleReceivedMessage(message) {
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in New Issue