Skip to content

Commit

Permalink
adicionada caixa de debug para validar regras ativadas
Browse files Browse the repository at this point in the history
  • Loading branch information
altendorfme committed Dec 20, 2024
1 parent 11d4676 commit 84b605d
Showing 1 changed file with 39 additions and 5 deletions.
44 changes: 39 additions & 5 deletions app/inc/URLAnalyzer.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ class URLAnalyzer
*/
private $cache;

/**
* @var array Lista de regras ativadas durante o processamento
*/
private $activatedRules = [];

/**
* Construtor da classe
* Inicializa as dependências necessárias
Expand Down Expand Up @@ -99,6 +104,9 @@ public function checkRedirects($url)
*/
public function analyze($url)
{
// Reset activated rules for new analysis
$this->activatedRules = [];

// 1. Limpa a URL
$cleanUrl = $this->cleanUrl($url);
if (!$cleanUrl) {
Expand Down Expand Up @@ -514,6 +522,7 @@ private function processContent($content, $host, $url)
$styleElement = $dom->createElement('style');
$styleElement->appendChild($dom->createTextNode($domainRules['customStyle']));
$dom->getElementsByTagName('head')[0]->appendChild($styleElement);
$this->activatedRules[] = 'customStyle';
}

if (isset($domainRules['customCode'])) {
Expand All @@ -526,36 +535,39 @@ private function processContent($content, $host, $url)
if (isset($domainRules['classAttrRemove'])) {
foreach ($domainRules['classAttrRemove'] as $class) {
$elements = $xpath->query("//*[contains(@class, '$class')]");
if ($elements !== false) {
if ($elements !== false && $elements->length > 0) {
foreach ($elements as $element) {
$this->removeClassNames($element, [$class]);
}
$this->activatedRules[] = "classAttrRemove: $class";
}
}
}

if (isset($domainRules['idElementRemove'])) {
foreach ($domainRules['idElementRemove'] as $id) {
$elements = $xpath->query("//*[@id='$id']");
if ($elements !== false) {
if ($elements !== false && $elements->length > 0) {
foreach ($elements as $element) {
if ($element->parentNode) {
$element->parentNode->removeChild($element);
}
}
$this->activatedRules[] = "idElementRemove: $id";
}
}
}

if (isset($domainRules['classElementRemove'])) {
foreach ($domainRules['classElementRemove'] as $class) {
$elements = $xpath->query("//*[contains(@class, '$class')]");
if ($elements !== false) {
if ($elements !== false && $elements->length > 0) {
foreach ($elements as $element) {
if ($element->parentNode) {
$element->parentNode->removeChild($element);
}
}
$this->activatedRules[] = "classElementRemove: $class";
}
}
}
Expand All @@ -564,22 +576,24 @@ private function processContent($content, $host, $url)
foreach ($domainRules['scriptTagRemove'] as $script) {
// Busca por tags script com src ou conteúdo contendo o script
$scriptElements = $xpath->query("//script[contains(@src, '$script')] | //script[contains(text(), '$script')]");
if ($scriptElements !== false) {
if ($scriptElements !== false && $scriptElements->length > 0) {
foreach ($scriptElements as $element) {
if ($element->parentNode) {
$element->parentNode->removeChild($element);
}
}
$this->activatedRules[] = "scriptTagRemove: $script";
}

// Busca por tags link que são scripts
$linkElements = $xpath->query("//link[@as='script' and contains(@href, '$script') and @type='application/javascript']");
if ($linkElements !== false) {
if ($linkElements !== false && $linkElements->length > 0) {
foreach ($linkElements as $element) {
if ($element->parentNode) {
$element->parentNode->removeChild($element);
}
}
$this->activatedRules[] = "scriptTagRemove: $script";
}
}
}
Expand All @@ -604,6 +618,26 @@ private function processContent($content, $host, $url)
$marretaHtml->appendXML('Chapéu de paywall é <a href="'.SITE_URL.'" style="color: #fff; text-decoration: underline; font-weight: bold;" target="_blank">Marreta</a>!');
$marretaDiv->appendChild($marretaHtml);
$body->appendChild($marretaDiv);

// Adiciona painel de debug se DEBUG for true
if (DEBUG) {
$debugDiv = $dom->createElement('div');
$debugDiv->setAttribute('style', 'z-index: 99999; position: fixed; bottom: 10px; right: 10px; background: rgba(0,0,0,0.8); color: #fff; font-size: 13px; line-height: 1.4; padding: 10px; border-radius: 3px; font-family: monospace; max-height: 200px; overflow-y: auto;');

if( empty($this->activatedRules)) {
$ruleElement = $dom->createElement('div');
$ruleElement->textContent = 'Nenhuma regra ativada';
$debugDiv->appendChild($ruleElement);
} else {
foreach ($this->activatedRules as $rule) {
$ruleElement = $dom->createElement('div');
$ruleElement->textContent = $rule;
$debugDiv->appendChild($ruleElement);
}
}

$body->appendChild($debugDiv);
}
}

return $dom->saveHTML();
Expand Down

0 comments on commit 84b605d

Please sign in to comment.