Skip to content

Commit

Permalink
traduções de documentações
Browse files Browse the repository at this point in the history
  • Loading branch information
altendorfme committed Jan 6, 2025
1 parent 55ac7fe commit a97966c
Show file tree
Hide file tree
Showing 16 changed files with 515 additions and 182 deletions.
6 changes: 6 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
FROM php:8.3-fpm

# Install PHP dependencies and extensions
# Instala dependências e extensões do PHP
RUN apt-get update && apt-get install -y \
nginx \
Expand All @@ -14,12 +15,15 @@ RUN apt-get update && apt-get install -y \
&& pecl install redis \
&& docker-php-ext-enable redis opcache

# Copy OPCache configuration
# Copia a configuração do OPCache
COPY opcache.ini /usr/local/etc/php/conf.d/opcache.ini

# Install Composer
# Instala o Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Copy webservice configuration
# Copia a configuração do webservice
COPY default.conf /etc/nginx/sites-available/default

Expand All @@ -29,12 +33,14 @@ COPY app/ /app/
WORKDIR /app
RUN composer install --no-interaction --optimize-autoloader

# Copy and configure initialization script permissions
# Copia e configura permissões do script de inicialização
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

RUN mkdir -p /app/cache /app/logs

# Configure base permissions for /app directory
# Configura permissões base para o diretório /app
RUN chown -R www-data:www-data /app \
&& chmod -R 755 /app
Expand Down
59 changes: 43 additions & 16 deletions app/api.php
Original file line number Diff line number Diff line change
@@ -1,28 +1,40 @@
<?php

/**
* URL Analysis API
* API para análise de URLs
*
* This file implements a REST endpoint that receives URLs via GET
* and returns processed results in JSON format.
*
* Este arquivo implementa um endpoint REST que recebe URLs via GET
* e retorna resultados processados em formato JSON.
*
* Funcionalidades:
* - Validação de URLs
* - Análise de conteúdo
* - Tratamento de erros
* - Suporte a CORS
* Features / Funcionalidades:
* - URL validation / Validação de URLs
* - Content analysis / Análise de conteúdo
* - Error handling / Tratamento de erros
* - CORS support / Suporte a CORS
*/

require_once 'config.php';
require_once 'inc/URLAnalyzer.php';
require_once 'inc/Language.php';

// Initialize language system with default language
// Inicializa o sistema de idiomas com o idioma padrão
Language::init(LANGUAGE);

// Set content type as JSON
// Define o tipo de conteúdo como JSON
header('Content-Type: application/json');

// Enable CORS (Cross-Origin Resource Sharing)
// Habilita CORS (Cross-Origin Resource Sharing)
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');

// Get request URL from path
// Obtém a URL da requisição a partir do path
$path = $_SERVER['REQUEST_URI'];
$prefix = '/api/';
Expand All @@ -31,10 +43,11 @@
$url = urldecode(substr($path, strlen($prefix)));

/**
* Function to send standardized JSON response
* Função para enviar resposta JSON padronizada
*
* @param array $data Dados a serem enviados na resposta
* @param int $statusCode Código de status HTTP
* @param array $data Data to be sent in response / Dados a serem enviados na resposta
* @param int $statusCode HTTP status code / Código de status HTTP
*/
function sendResponse($data, $statusCode = 200)
{
Expand All @@ -53,58 +66,72 @@ function sendResponse($data, $statusCode = 200)
exit;
}

// Basic URL validation
// Validação básica da URL
if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) {
$errorMessage = Language::getMessage('INVALID_URL');
sendResponse([
'error' => [
'code' => 'INVALID_URL',
'message' => MESSAGES['INVALID_URL']['message']
'message' => $errorMessage['message']
]
], 400);
}

try {
// Instantiate URL analyzer
// Instancia o analisador de URLs
$analyzer = new URLAnalyzer();

// Try to analyze the provided URL
// Tenta analisar a URL fornecida
$analyzer->analyze($url);

// If analysis is successful, return the processed URL
// Se a análise for bem-sucedida, retorna a URL processada
sendResponse([
'url' => SITE_URL . '/p/' . $url
], 200);
} catch (Exception $e) {
// Error handling with mapping to appropriate HTTP codes
// Tratamento de erros com mapeamento para códigos HTTP apropriados
$message = $e->getMessage();
$statusCode = 400;
$errorCode = 'GENERIC_ERROR';

// Mapeia a mensagem de erro para o código e status apropriados
foreach (MESSAGES as $key => $value) {
if (strpos($message, $value['message']) !== false) {
$statusCode = ($value['type'] === 'error') ? 400 : 503;
$errorCode = $key;
$errorMessage = Language::getMessage('GENERIC_ERROR');

// Try to match the error message with known error types
// Tenta corresponder a mensagem de erro com tipos de erro conhecidos
$errorTypes = ['BLOCKED_DOMAIN', 'DNS_FAILURE', 'HTTP_ERROR', 'CONNECTION_ERROR', 'CONTENT_ERROR'];
foreach ($errorTypes as $type) {
$typeMessage = Language::getMessage($type);
if (strpos($message, $typeMessage['message']) !== false) {
$statusCode = ($typeMessage['type'] === 'error') ? 400 : 503;
$errorCode = $type;
$errorMessage = $typeMessage;
break;
}
}

// Add error header for better client-side handling
// Adiciona header de erro para melhor tratamento no cliente
header('X-Error-Message: ' . $message);

sendResponse([
'error' => [
'code' => $errorCode,
'message' => $message
'message' => $errorMessage['message']
]
], $statusCode);
}
} else {
// Return 404 error for endpoints not found
// Retorna erro 404 para endpoints não encontrados
$errorMessage = Language::getMessage('NOT_FOUND');
sendResponse([
'error' => [
'code' => 'NOT_FOUND',
'message' => MESSAGES['NOT_FOUND']['message']
'message' => $errorMessage['message']
]
], 404);
}
26 changes: 15 additions & 11 deletions app/data/blocked_domains.php
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
<?php

/**
* List of blocked domains
* Lista de domínios bloqueados
*
* Defines domains that cannot be accessed by the system
* due to usage policies or technical restrictions
*
* Define os domínios que não podem ser acessados pelo sistema
* por questões de política de uso ou restrições técnicas
*/
return [
// Sites de notícias
//-- Conteudo fica atras de um acesso de login
// News sites / Sites de notícias
//-- Content behind login access / Conteúdo fica atrás de um acesso de login
'wsj.com',
'piaui.folha.uol.com.br',
'economist.com',
Expand All @@ -25,14 +29,14 @@
'adage.com',
'couriermail.com.au',
'mittelbayerische.de/',
//-- Bloqueio tecnico de acesso ao conteudo
//-- Technical access blocking / Bloqueio técnico de acesso ao conteúdo
'bloomberg.com',
'sportskeeda.com',
'kansascity.com',
'fastcompany.com',
'expressnews.com',
'nydailynews.com',
// Tracking
// Tracking services / Serviços de rastreamento
'metaffiliation.com',
'google-analytics.com',
'googletagmanager.com',
Expand All @@ -53,7 +57,7 @@
'fullstory.com',
'heap.io',
'clearbrain.com',
// Redes sociais
// Social networks / Redes sociais
'facebook.com',
'instagram.com',
'twitter.com',
Expand All @@ -67,40 +71,40 @@
'redd.it',
'bsky.app',
'threads.net',
// Streaming
// Streaming services / Serviços de streaming
'netflix.com',
'hulu.com',
'disneyplus.com',
'primevideo.com',
'spotify.com',
'youtube.com',
'twitch.tv',
// E-commerce
// E-commerce sites / Sites de comércio eletrônico
'amazon.com',
'ebay.com',
'aliexpress.com',
'mercadolivre.com.br',
'shopify.com',
// Compartilhamento de arquivos
// File sharing / Compartilhamento de arquivos
'mega.nz',
'mediafire.com',
'wetransfer.com',
'dropbox.com',
'torrent9.pe',
'thepiratebay.org',
// Sites adultos
// Adult sites / Sites adultos
'pornhub.com',
'xvideos.com',
'xnxx.com',
'onlyfans.com',
'privacy.com.br',
'fatalmodel.com',
// Apostas e jogos
// Betting and gaming / Apostas e jogos
'bet365.com',
'betfair.com',
'pokerstars.com',
'casino.com',
// Outros sites populares
// Other popular sites / Outros sites populares
'github.com',
'stackoverflow.com',
'wikipedia.org',
Expand Down
34 changes: 19 additions & 15 deletions app/data/domain_rules.php
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
<?php

/**
* Specific rule configurations for individual domains
* Configurações específicas de regras para domínios individuais
*
* This file contains custom rules for specific sites, allowing
* system behavior adjustment for each domain individually.
*
* Este arquivo contém regras personalizadas para sites específicos, permitindo
* ajustar o comportamento do sistema para cada domínio individualmente.
*
* Estrutura das regras por domínio:
* - userAgent: Define um User-Agent personalizado para o domínio
* - headers: Headers HTTP personalizados para requisições
* - idElementRemove: Array de IDs HTML que devem ser removidos da página
* - classElementRemove: Array de classes HTML que devem ser removidas
* - scriptTagRemove: Array de scripts que devem ser removidos (partial match)
* - cookies: Array associativo de cookies a serem definidos (null remove o cookie)
* - classAttrRemove: Array de classes a serem removidas de elementos
* - customCode: String contendo código JavaScript personalizado para execução
* - customStyle: String contendo código CSS personalizado para execução
* - excludeGlobalRules: Array associativo de regras globais a serem excluídas para este domínio
* Exemplo:
* Domain rule structure / Estrutura das regras por domínio:
* - userAgent: Define custom User-Agent for the domain / Define um User-Agent personalizado para o domínio
* - headers: Custom HTTP headers for requests / Headers HTTP personalizados para requisições
* - idElementRemove: Array of HTML IDs to be removed / Array de IDs HTML que devem ser removidos da página
* - classElementRemove: Array of HTML classes to be removed / Array de classes HTML que devem ser removidas
* - scriptTagRemove: Array of scripts to be removed (partial match) / Array de scripts que devem ser removidos (partial match)
* - cookies: Associative array of cookies to be set (null removes cookie) / Array associativo de cookies a serem definidos (null remove o cookie)
* - classAttrRemove: Array of classes to be removed from elements / Array de classes a serem removidas de elementos
* - customCode: String containing custom JavaScript code / String contendo código JavaScript personalizado
* - customStyle: String containing custom CSS code / String contendo código CSS personalizado
* - excludeGlobalRules: Associative array of global rules to exclude for this domain / Array associativo de regras globais a serem excluídas para este domínio
* Example / Exemplo:
* 'excludeGlobalRules' => [
* 'scriptTagRemove' => ['gtm.js', 'ga.js'], // Exclui scripts específicos das regras globais
* 'classElementRemove' => ['subscription'] // Exclui classes específicas das regras globais
* 'scriptTagRemove' => ['gtm.js', 'ga.js'], // Excludes specific scripts from global rules / Exclui scripts específicos das regras globais
* 'classElementRemove' => ['subscription'] // Excludes specific classes from global rules / Exclui classes específicas das regras globais
* ]
* - useSelenium: Boolean indicando se deve usar Selenium para extração
* - useSelenium: Boolean indicating whether to use Selenium for extraction / Boolean indicando se deve usar Selenium para extração
*/
return [
'nsctotal.com.br' => [
Expand Down
11 changes: 11 additions & 0 deletions app/data/global_rules.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
<?php

/**
* Global rule configurations applied to all domains
* Configurações globais de regras aplicadas a todos os domínios
*
* This file defines rules that are applied by default to all sites,
* organized into categories for better maintenance and understanding.
*
* Este arquivo define regras que são aplicadas por padrão a todos os sites,
* organizadas em categorias para melhor manutenção e compreensão.
*
* Note: These rules can be overridden or disabled for specific domains
* using the 'excludeGlobalRules' configuration in domain_rules.php
*
* Nota: Estas regras podem ser sobrescritas ou desativadas para domínios específicos
* usando a configuração 'excludeGlobalRules' em domain_rules.php
*/
return [
// HTML classes to be removed from all pages
// Classes HTML a serem removidas de todas as páginas
'classElementRemove' => [
'subscription',
'subscriber-content',
Expand All @@ -31,6 +40,8 @@
'signup-overlay',
'onesignal-slidedown-container'
],
// Scripts to be removed from all pages
// Scripts a serem removidos de todas as páginas
'scriptTagRemove' => [
'gtm.js',
'ga.js',
Expand Down
13 changes: 13 additions & 0 deletions app/data/user_agents.php
Original file line number Diff line number Diff line change
@@ -1,12 +1,25 @@
<?php

/**
* Bot configurations
* Configurações dos bots
*
* Defines user agents that can be used to make requests
* Define os user agents que podem ser utilizados para fazer requisições
*
* These user agents are used to simulate legitimate web crawlers
* Estes user agents são usados para simular crawlers web legítimos
*/
return [
// Google News bot
// Bot do Google News
'Googlebot-News',

// Mobile Googlebot
// Googlebot para dispositivos móveis
'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',

// Desktop Googlebot
// Googlebot para desktop
'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z Safari/537.36'
];
Loading

0 comments on commit a97966c

Please sign in to comment.