Extension:AbuseFilter/pt-br

Esta extensão vem com o MediaWiki 1.38 e versões superiores. The remaining configuration instructions must still be followed.
Category:Extensions bundled with MediaWiki 1.38/pt-br Category:GPL licensed extensions/pt-br
Manual de extensões do MediaWiki
AbuseFilter
Estado da versão: estávelCategory:Stable extensions/pt-br
Implementação Atividade dos usuários Category:User activity extensions/pt-br, Página especial Category:Special page extensions/pt-br, API Category:API extensions/pt-br
Descrição Permite inserir restrições baseadas em comportamentos específicos na atividade wiki.
Autor(es)
Política de
compatibilidade
Lançamentos de snapshot junto com o MediaWiki. A master não é retrocompatível.
Modifica o banco
de dados
Sim
Composer mediawiki/abuse-filterCategory:Extensions supporting Composer/pt-br
Tabelas abuse_filter
abuse_filter_action
abuse_filter_history
abuse_filter_log
Licença GNU GPL (Licença Pública Geral) 2.0 ou superior
Download Category:Extensions in Wikimedia version control/pt-br
  • $wgAbuseFilterConditionLimit
  • $wgAbuseFilterRangeBlockSize
  • $wgAbuseFilterAnonBlockDuration
  • $wgAbuseFilterLogIPMaxAge
  • $wgAbuseFilterCentralDB
  • $wgAbuseFilterDefaultWarningMessage
  • $wgAbuseFilterLogIP
  • $wgAbuseFilterEmergencyDisableAge
  • $wgAbuseFilterEnableBlockedExternalDomain
  • $wgAbuseFilterActionRestrictions
  • $wgAbuseFilterActions
  • $wgAbuseFilterProtectedVariables
  • $wgAbuseFilterPrivateDetailsForceReason
  • $wgAbuseFilterLogPrivateDetailsAccess
  • $wgAbuseFilterEmergencyDisableCount
  • $wgAbuseFilterLogProtectedVariablesMaxAge
  • $wgAbuseFilterSlowFilterRuntimeLimit
  • $wgAbuseFilterEmergencyDisableThreshold
  • $wgAbuseFilterLocallyDisabledGlobalActions
  • $wgAbuseFilterBlockDuration
  • $wgAbuseFilterDefaultDisallowMessage
  • $wgAbuseFilterValidGroups
  • $wgAbuseFilterNotificationsPrivate
  • $wgAbuseFilterBlockAutopromoteDuration
  • $wgAbuseFilterIsCentral
  • $wgAbuseFilterNotifications
  • abusefilter-modify
  • abusefilter-log-detail
  • abusefilter-view
  • abusefilter-log
  • abusefilter-privatedetails
  • abusefilter-privatedetails-log
  • abusefilter-modify-restricted
  • abusefilter-revert
  • abusefilter-view-private
  • abusefilter-log-private
  • abusefilter-hidden-log
  • abusefilter-hide-log
  • abusefilter-modify-global
  • abusefilter-modify-blocked-external-domains
  • abusefilter-bypass-blocked-external-domains
  • abusefilter-access-protected-vars
  • abusefilter-protected-vars-log
Para traduzir a extensão AbuseFilter, verifique sua disponibilidade no translatewiki.net
Problemas Tarefas em aberto · Relatar um bug
Category:All extensions/pt-br

AbuseFilter

2020 Coolest Tool
Award Winner

in the category
Quality

A extensão AbuseFilter permite que usuários com este privilégio definam ações específicas a serem tomadas quando usuários realizam ações, como edições, que correspondam a certos critérios.

Por exemplo, um filtro poderia ser criado para evitar que usuários anônimos adicionassem ligações externas, ou para bloquear um usuários que remova mais de 2 000 caracteres.


Instalação

  • Baixe e mova a pasta extraída AbuseFilter ao seu diretório extensions/.
    Desenvolvedores e colaboradores de código, por outro lado, deverão instalar a extensão a partir do Git, usando:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter
    
  • Se estiver instalando a partir do Git, execute o Composer para instalar as dependências do PHP através do comando composer install --no-dev no diretório da extensão. (Veja T173141 para possíveis complicações.)Category:Extensions requiring Composer with git/pt-br
  • Adicione o seguinte código ao final do seu arquivo LocalSettings.php :
    wfLoadExtension( 'AbuseFilter' );
    
  • Execute o script de atualização que criará automaticamente as tabelas necessárias a essa extensão no banco de dados.
  • Configure conforme o necessário.
  • Yes Concluído – Navegue à página Special:Version em sua wiki para verificar se a instalação da extensão foi bem sucedida.
Ao instalar a partir do Git, observe que esta extensão requer Composer .

Portanto, após a instalação do Git, mude para o diretório que contém a extensão, por exemplo "../extensions/AbuseFilter/" e execute composer install --no-dev, ou ao atualizar: composer update --no-dev.

Alternativamente, bem como de preferência, adicione a linha "extensions/AbuseFilter/composer.json" ao arquivo "composer.local.json" no diretório raiz da sua wiki, como por exemplo

{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/AbuseFilter/composer.json"
			]
		}
	}
}

Configuração

Direitos de usuário

Uma vez instalada a extensão, você terá de estabelecer os direitos de usuário no arquivo "LocalSettings.php".

Direitos do usuário para o filtro de abusos
Direito Descrição Notas Grupos de usuários que têm esse direito por padrão Versions
abusefilter-modify Criar ou modificar filtros de abuso Requer o direito abusefilter-view sysop 1.19+
abusefilter-view Ver filtros de abusos * 1.19+
abusefilter-log Ver o registro de abusos * 1.19+
abusefilter-log-detail Ver entradas detalhadas do registro de abusos Requer o direito abusefilter-log sysop 1.19+
abusefilter-privatedetails Ver dados privados no registro de abusos Antes da versão 1.34, esse direito era denominado abusefilter-private. - Requer o direito abusefilter-log-detail 1.19+
abusefilter-modify-restricted Modificar filtros de abusos com ações restritas Requer o direito abusefilter-modify sysop 1.19+
abusefilter-revert Reverter todas as modificações feitas por um dado filtro de abusos sysop 1.19+
abusefilter-view-private Ver filtros de abuso marcados como privados Requer o direito abusefilter-view (não é necessário se o grupo já tiver o direito de abusefilter-modify) sysop 1.19+
abusefilter-hide-log Ocultar entradas do filtro de abusos Requer o direito abusefilter-log suppress 1.19+
abusefilter-hidden-log Ver entradas ocultadas do registro de abusos Requer o direito abusefilter-log suppress 1.19+
abusefilter-log-private Ver registro de entrada do fitro de abusos marcados como privados Requer o direito abusefilter-log (não é necessário se o grupo já tiver os direitos de abusefilter-modify ou abusefilter-view-private) sysop 1.20+
abusefilter-modify-global Criar ou modificar filtros de abuso global Requer o direito abusefilter-modify 1.21+
abusefilter-privatedetails-log Veja o registro de acesso de detalhes privados no Filtro de abuso Antes da versão 1.34, esse direito era denominado abusefilter-private-log. 1.31+
abusefilter-modify-blocked-external-domains Criar ou modificar quais domínios externos são bloqueados de se tornarem ligações (links) sysop 1.41+
abusefilter-bypass-blocked-external-domains Ignorar quais domínios externos estão bloqueados Requer o direito edit bot 1.41+
abusefilter-access-protected-vars Ver e criar filtros que usam variáveis protegidas sysop 1.43+
abusefilter-protected-vars-log Visualizar os registros relacionados ao acesso a valores de variáveis protegidas sysop 1.43+

Por exemplo, a configuração de exemplo a seguir permitiria sysops fazerem tudo o que quisessem com o AbuseFilter, e todo mundo visualizaria o registro e as configurações de filtro público:

$wgGroupPermissions['sysop']['abusefilter-modify'] = true;
$wgGroupPermissions['*']['abusefilter-log-detail'] = true;
$wgGroupPermissions['*']['abusefilter-view'] = true;
$wgGroupPermissions['*']['abusefilter-log'] = true;
$wgGroupPermissions['sysop']['abusefilter-privatedetails'] = true;
$wgGroupPermissions['sysop']['abusefilter-modify-restricted'] = true;
$wgGroupPermissions['sysop']['abusefilter-revert'] = true;
$wgGroupPermissions['sysop']['abusefilter-access-protected-vars'] = true;
$wgGroupPermissions['sysop']['abusefilter-protected-vars-log'] = true;
Filtros marcados como privados só podem ser vistos por usuários com a permissão “abusefilter-modify” ou a permissão “abusefilter-view-private”.
Os filtros protegidos só podem ser criados e visualizados por usuários com a permissão abusefilter-access-protected-vars. Os registros relativos a esses filtros só podem ser visualizados por usuários com a permissão abusefilter-protected-vars-log. Para mais informações, consulte Formato das regras .

Parâmetros

Nome da variável Valor padrão Descrição
$wgAbuseFilterActions
[
    'throttle' => true,
    'warn' => true,
    'disallow' => true,
    'blockautopromote' => true,
    'block' => true,
    'rangeblock' => false,
    'degroup' => false,
    'tag' => true
]
As ações possíveis que podem ser realizadas pelos filtros de abuso. Ao adicionar uma nova ação, verifique se ela está restrita em $wgAbuseFilterActionRestrictions e, se for, não se esqueça de adicionar o direito abusefilter-modify-restricted aos grupos de usuários apropriados.
$wgAbuseFilterConditionLimit
1000
O número máximo de 'condições' que pode ser usado cada vez que os filtros são aplicadas a uma alteração. (Filtros mais complexos requerem mais 'condições').
$wgAbuseFilterValidGroups
[
    'default'
]
A lista de filtros de "grupos" pode ser dividida. Por padrão, há apenas um grupo. Outras extensões podem adicionar outros grupos.
$wgAbuseFilterEmergencyDisableThreshold
[
    'default' => 0.05
]
Desabilite um filtro se ele corresponder a mais de 2 edições, constituindo mais de 5% das ações que foram verificadas em relação ao grupo do filtro no período "observado" (no máximo um dia) e o filtro tiver sido alterado nos últimos 86.400 segundos (um dia). Veja estrangulamento de emergência.
$wgAbuseFilterEmergencyDisableCount
[
    'default' => 2
]
$wgAbuseFilterEmergencyDisableAge
[
    'default' => 86400
]
$wgAbuseFilterActionRestrictions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => true,
	"block" => true,
	"rangeblock" => true,
	"degroup" => true,
	"tag" => false
]
Os usuários devem ter o direito de usuário "abusefilter-modify-restricted" bem como "abusefilter-modify" a fim de criar ou modificar os filtros que realizam essas ações.
$wgAbuseFilterNotifications
false
Permite configurar a extensão para enviar notificações de sucesso para Special:RecentChanges ou UDP. Opções disponíveis: rc, udp, rcandudp
Para enviar alterações aos filtros de abuso para Special:RecentChanges, use $wgExtensionFunctions[] = static function () { global $wgLogRestrictions; unset( $wgLogRestrictions['abusefilter'] ); };.
$wgAbuseFilterNotificationsPrivate
false
Habilitar notificações para filtros privados.
$wgAbuseFilterCentralDB
null
MW 1.41+ Nome de um banco de dados onde os filtros de abuso globais serão armazenados. Requer CentralAuth instalado, caso contrário, os filtros globais serão interrompidos em uma wikifarm.
$wgAbuseFilterIsCentral
false
MW 1.41+ Defina esta variável como true para a wiki onde AbuseFilters globais são armazenados. Requer CentralAuth instalado, caso contrário, os filtros globais serão interrompidos em uma wikifarm.
$wgAbuseFilterLocallyDisabledGlobalActions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => false,
	"block" => false,
	"rangeblock" => false,
	"degroup" => false,
	"tag" => false
]
Impedir que filtros centralizados realizem ações definidas como verdadeiras nesta variável.
$wgAbuseFilterBlockDuration
'indefinite'
Duração dos bloqueios efetuados pelo AbuseFilter
a partir de 1.31.0-wmf.25, as durações dos bloqueios podem ser especificadas para cada filtro e substituirão essa variável. Esta variável só é usada ao habilitar o bloco para pré-selecionar uma duração padrão.
$wgAbuseFilterAnonBlockDuration
null
Duração de bloqueios feitos pelo AbuseFilter em usuários que não estão logados. O valor de $wgAbuseFilterBlockDuration será usado se ela não estiver definida.
a partir de 1.31.0-wmf.25, as durações dos bloqueios podem ser especificadas para cada filtro e substituirão essa variável. Esta variável só é usada ao habilitar o bloqueio para pré-selecionar uma duração padrão.
$wgAbuseFilterBlockAutopromoteDuration
5
Duração, em dias, durante a qual a autopromoção dos usuários é bloqueada por filtros.
$wgAbuseFilterDefaultWarningMessage
[
    'default' => 'abusefilter-warning'
]
Mensagens de aviso padrão, por filtro de grupo
$wgAbuseFilterDefaultDisallowMessage
[
    'default' => 'abusefilter-disallowed'
]
Mensagens de bloqueio padrão, por grupo de filtro
$wgAbuseFilterLogIP
true
Se deve incluir o IP no abuse_filter_log
$wgAbuseFilterLogIPMaxAge
3 * 30 * 24 * 3600
Idade utilizada como ponto de corte ao purgar dados de registro de IP antigos. Padrão para 3 meses. Usado pelo script de manutenção purgeOldLogIPData.php.
$wgAbuseFilterProfileActionsCap
10000
Número de ação que determina quando redefinir as estatísticas de criação de perfil.
$wgAbuseFilterLogPrivateDetailsAccess
false
Se o acesso a informações privadas de uma entrada de registro de filtro é registrado.
$wgAbuseFilterPrivateDetailsForceReason
false
Se os usuários são forçados a fornecer um motivo para acessar informações privadas de uma entrada de registro de filtro.
$wgAbuseFilterSlowFilterRuntimeLimit
500
O tempo de execução em milissegundos antes de um filtro ser considerado lento.
$wgAbuseFilterRangeBlockSize
[
    'IPv4' => '16',
    'IPv6' => '19',
]
Tamanho do intervalo bloqueado pela ação 'rangeblock'.
$wgAbuseFilterProtectedVariables
[ "user_unnamed_ip" ]
Matriz de variáveis consideradas protegidas (acesso limitado) e que exigem o direito abusefilter-access-protected-vars para uso/visualização.


Supressão de emergência

O AbuseFilter vem com um recurso que suprime (desabilita) automaticamente os filtros que foram editados recentemente e correspondem a um determinado limite das ações mais recentes.

Isso é feito para evitar edições prejudiciais nos filtros para bloquear todos os usuários que executam uma ação em uma wiki ou semelhante.

A condição para desativar o filtro depende dessas variáveis:

  • $wgAbuseFilterEmergencyDisableThreshold - Porcentagem de correspondências sobre a quantidade total de ações no período observado.
  • $wgAbuseFilterEmergencyDisableCount - Quantidade de correspondências do filtro no período observado.
  • $wgAbuseFilterEmergencyDisableAge - Idade do filtro considerado. Se a última edição do filtro for anterior a esse número de segundos, o filtro não será regulado, a menos que já esteja regulado.

Os filtros suprimidos podem ser identificados na lista de filtros (Special:AbuseFilter) com o estado Ativo, Alta taxa de correspondências. A supressão ocorre silenciosamente e não há como saber quando um filtro foi suprimido, exceto quando Extension:Echo é instalado, então uma notificação é enviada ao último usuário a modificar o filtro.

Quando um filtro é suprimido, ele não executa nenhuma ação perigosa (ações geralmente restritas a direitos especiais como bloquear o usuário ou removê-lo de grupos, controlados por $wgAbuseFilterActionRestrictions), e apenas ações "seguras" são permitidas (aquelas que podem avisar ou impedir a ação em andamento). Filtros suprimidos não são ativados automaticamente. Para desativar a supressão, você precisará editar o filtro. Observe que você realmente precisará mudar algo no filtro: algo como as notas do filtro será suficiente.

Observe que editar o filtro atualiza sua idade e pode fazer com que ele seja desativado se atingir novamente as condições para ser suprimido em um curto período desde a última edição, levando a um filtro inutilizável se sua wiki tiver mais edições de abuso do que legítimas.

Criando e gerenciando filtros

Uma vez que a extensão foi instalada, filtros podem ser criados/testados/alterados/excluídos e os registros podem ser acessados ​​a partir da página de gerenciamento do filtro de abusos Special:AbuseFilter.

API

O AbuseFilter adiciona dois módulos de lista de API, uma para detalhes dos filtros de abuso ("abusefilters") e um para o registro de abusos, uma vez que este é separado de outros registros do MediaWiki ("abuselog"). Não é possível criar ou modificar filtros de abuso usando a API.

list=abusefilters (abf)

Lista informações sobre filtros

Parâmetros
  • abfstartid O ID do filtro de onde inicia-se a enumeração
  • abfendid O ID de filtro onde interrompe-se a enumeração
  • abfdir A direção na qual enumerar: older, newer
  • abfshow Mostra apenas filtros que atendem a esses critérios: enabled|!enabled|deleted|!deleted|private|!private|protected|!protected
  • abflimit O número máximo de filtros para listar
  • abfprop Quais propriedades para se obter: id|description|pattern|actions|hits|comments|lasteditor|lastedittime|status|private|protected

Quando os filtros são private, algumas das propriedades especificadas com abfprop estarão ausentes, a menos que você tenha os direitos de usuário apropriados.

Exemplos
Lista filtros de abuso não-privados
Resultado
{
    "batchcomplete": "",
    "continue": {
        "abfstartid": 18,
        "continue": "-||"
    },
    "query": {
        "abusefilters": [
            {
                "id": 1,
                "hits": 41430
            },
            {
                "id": 3,
                "hits": 957485
            },
            {
                "id": 5,
                "hits": 5931
            },
            {
                "id": 6,
                "hits": 19
            },
            {
                "id": 8,
                "hits": 7
            },
            {
                "id": 9,
                "hits": 41354
            },
            {
                "id": 11,
                "hits": 132971
            },
            {
                "id": 12,
                "hits": 139693
            },
            {
                "id": 14,
                "hits": 63
            },
            {
                "id": 15,
                "hits": 15
            }
        ]
    }
}

list=abuselog (afl)

Lista casos em que as ações desencadearam um filtro de abuso.

Parâmetros
  • afllogid Um único ID de registro inteiro para listar.
  • aflstart O timestamp de onde se inicia a enumeração
  • aflend O timestamp onde se para a enumeração
  • afldir A direção na qual se realiza a enumeração (mais antigo, mais recente)
  • afluser Mostra apenas as entradas onde a ação foi tentada por um determinado usuário ou endereço IP.
  • afltitle Mostra apenas as entradas onde a ação envolveu uma determinada página.
  • aflfilter Mostra apenas as entradas que desencadearam um determinado ID de filtro
  • afllimit O número máximo de entradas para listar
  • aflprop Quais propriedades a serem obtidas: (ids|filter|user|title|action|details|result|timestamp|hidden|revid|wiki)

aflprop=wiki é reconhecido apenas em wikis centrais.

Exemplo
Lista de casos em que o filtro de abuso foi desencadeado em resposta às ações do usuário "SineBot"
Resultado
{
    "batchcomplete": "",
    "continue": {
        "aflstart": "2018-03-06T02:34:18Z",
        "continue": "-||"
    },
    "query": {
        "abuselog": [
            {
                "id": 27219261,
                "filter_id": "1073"
            },
            {
                "id": 26938051,
                "filter_id": ""
            },
            {
                "id": 23388942,
                "filter_id": "1"
            },
            {
                "id": 22044912,
                "filter_id": ""
            },
            {
                "id": 22032235,
                "filter_id": ""
            },
            {
                "id": 22032196,
                "filter_id": ""
            },
            {
                "id": 21983882,
                "filter_id": ""
            },
            {
                "id": 20594818,
                "filter_id": "904"
            },
            {
                "id": 20593489,
                "filter_id": "904"
            },
            {
                "id": 20590442,
                "filter_id": "904"
            }
        ]
    }
}


Possíveis erros

Integração com outras extensões

Você pode integrar o filtro de abusos com outra extensão de várias maneiras.

Adicionando variáveis para filtragem

É possível adicionar novas variáveis, para serem utilizadas em filtros de abuso. Uma lista de exemplos está disponível. Para fazer isso, você deve:

  • Adicione um manipulador para o gancho AbuseFilter-builder. Para adicionar uma variável, você deve usar $builder['vars']['variable_name'] = 'i18n-key';, onde variable_name é o nome da variável e i18n-key é o fragmento de uma chave i18n. A chave completa será abusefilter-edit-builder-vars-{$your_key}.
  • Adicione as mensagens i18n que você escolheu no ponto anterior.
  • Escolha um manipulador de gancho onde a variável será calculada. Dependendo do seu caso de uso, você pode:
    • Implemente o gancho AbuseFilter-generateTitleVars; isso é pensado especificamente para variáveis relacionadas à página;
    • Implemente o gancho AbuseFilter-generateUserVars; isso é pensado especificamente para variáveis relacionadas ao usuário;
    • Implemente o gancho AbuseFilter-generateGenericVars; isso é para variáveis não vinculadas a uma página ou usuário específico;
    • Implemente o gancho AbuseFilterAlterVariables; isso é um pouco mais flexível do que os outros ganchos, mas tem uma desvantagem: sua variável não estará disponível ao examinar entradas anteriores de mudanças recentes. Se você quiser implementar esse recurso (e é recomendado fazer isso), você deve usar um dos ganchos listados acima e usar seu terceiro parâmetro ($RCRow).
  • Dentro do gerenciador de gancho, existem duas maneiras de adicionar uma variável:
    • A forma "direta" é chamar $vars->setVar( 'var_name', var_value );. Isso é ideal apenas quando o valor é fácil e rápido de calcular: o valor é calculado mesmo se nenhum filtro ativo o usar.
    • A maneira "preguiçosa" é chamar $vars->setLazyLoadVar( 'var_name', 'method_name', $params );. Aqui, 'method_name' é um identificador (único) que será usado para calcular a variável (é recomendado prefixá-lo com o nome de sua extensão). Para registrar o método, você deve adicionar um manipulador para o gancho AbuseFilter-computeVariable; nele, você deve verificar se o $method passado corresponde ao seu 'nome_do_método' e, em caso afirmativo, calcular a variável. Por último, $params é uma matriz de parâmetros de que você precisará para calcular a variável; eles são passados para o manipulador de gancho computeVariable. Para obter um exemplo disso, você pode verificar o CentralAuth global_user_groups.

Adicionar ações personalizadas

Você pode adicionar manipuladores de ação personalizados, para que cada filtro possa executar outras ações. Para fazer isso, você escolhe um nome para a ação ('my-action' de agora em diante) e, em seguida:

  • Crie uma classe chamada, por exemplo MyAction, que deve estender \MediaWiki\Extension\AbuseFilter\Consequence, que também pode implementar HookAborterConsequence ou ConsequencesDisablerConsequence
  • Adicione um assinante ao gancho AbuseFilterCustomActions; o assinante deve fornecer um retorno de chamada, conforme documentado na documentação do gancho, que retorna uma instância da classe criada acima, por exemplo:
class MyAction extends \MediaWiki\Extension\AbuseFilter\Consequence {
    public function run() {
        throw new \Exception( 'Write me' );
    }
}
public function onAbuseFilterCustomActions( &$actions ) {
    $actions[] = function ( \MediaWiki\Extension\AbuseFilter\Consequence\Parameters $params, array $rawParams ) : MyConsequence {
        return new MyAction( $params, $rawParams );
    };
}

Então você deve adicionar as seguintes mensagens i18n; você pode substituir 'my_action' por, por exemplo, 'block' para ver para que servem as mensagens:

  • 'abusefilter-edit-action-${my_action}'
  • 'abusefilter-action-${my_action}'

Adicionando grupos de regras

Você também pode adicionar grupos de regras extras, que podem ser usados para agrupar filtros de abuso existentes. Observe que, no momento, cada filtro só pode estar em um único grupo (T116642). Atualmente, o único consumidor conhecido desse recurso é Extension:StructuredDiscussions. Para fazer isso, você deve:

  • Anexe o nome do grupo a $wgAbuseFilterValidGroups
  • Adicione algum código para executar os filtros com seu grupo. Observe que filtro de abusos não fará isso por conta própria. Para fazer isso, você deve construir um objeto AbuseFilterRunner, passando o nome do seu grupo.

Ver também

Category:Extensions used on Wikimedia/pt-br#AbuseFilter/pt-br Category:Spam management extensions/pt-br
Category:API extensions/pt-br Category:All extensions/pt-br Category:ChangeTagsListActive extensions/pt-br Category:CheckUserInsertChangesRow extensions/pt-br Category:CheckUserInsertLogEventRow extensions/pt-br Category:CheckUserInsertPrivateEventRow extensions/pt-br Category:ContributionsToolLinks extensions/pt-br Category:EditFilterMergedContent extensions/pt-br Category:Extensions available as Debian packages/pt-br Category:Extensions bundled with MediaWiki 1.38/pt-br Category:Extensions in Wikimedia version control/pt-br Category:Extensions included in Canasta/pt-br Category:Extensions included in Fandom/pt-br Category:Extensions included in Miraheze/pt-br Category:Extensions included in MyWikis/pt-br Category:Extensions included in ProWiki/pt-br Category:Extensions included in ShoutWiki/pt-br Category:Extensions included in Telepedia/pt-br Category:Extensions included in WikiForge/pt-br Category:Extensions included in wiki.gg/pt-br Category:Extensions requiring Composer with git/pt-br Category:Extensions supporting Composer/pt-br Category:Extensions used on Wikimedia/pt-br Category:GPL licensed extensions/pt-br Category:GetAutoPromoteGroups extensions/pt-br Category:GetUserPermissionsErrors extensions/pt-br Category:HistoryPageToolLinks extensions/pt-br Category:JsonValidateSave extensions/pt-br Category:ListDefinedTags extensions/pt-br Category:LoadExtensionSchemaUpdates extensions/pt-br Category:PageDelete extensions/pt-br Category:ParserOutputStashForEdit extensions/pt-br Category:RecentChange save extensions/pt-br Category:Spam management extensions/pt-br Category:Special page extensions/pt-br Category:Stable extensions/pt-br Category:TitleMove extensions/pt-br Category:UndeletePageToolLinks extensions/pt-br Category:UploadStashFile extensions/pt-br Category:UploadVerifyUpload extensions/pt-br Category:UserMergeAccountFields extensions/pt-br Category:User activity extensions/pt-br