Olá a todos ![]()
Peço desculpas antecipadas por este post longo, mas talvez alguém familiarizado com o Discourse já conheça as respostas de imediato.
Eu administro um fórum de interesse especial, que é moderado. Somos dois e o outro colega escreveu o software (também em Ruby). O fórum existente é um software totalmente personalizado, notável por sua simplicidade em comparação, por exemplo, com PHP-BB e Vbulletin (e esses continuam sendo hackeados). O banco de dados tem cerca de 40 GB e contém 200 mil posts. Por vários motivos, estamos considerando migrar o banco de dados para outra plataforma, e o Discourse parece ser uma opção viável.
Testes preliminares sugerem que ele é bastante bom na funcionalidade geral, como suporte à incorporação de imagens e vídeos. Até mesmo o envio de múltiplas imagens a partir de um celular Android funciona corretamente!
No entanto, precisaríamos de algumas personalizações; principalmente simplificações na interface do usuário. Exemplos, sem ordem específica de importância, são:
-
Não mostrar a contagem total de posts de um usuário — isso é para evitar que novos membros se sintam intimidados.
-
Bloquear a edição de posts pelo usuário após um certo tempo (atualmente configuramos isso em 2 horas) — isso é para evitar um tipo de trolling que não é incomum nesse ambiente.
-
Uma seção de anúncios classificados, com uma forma de pagamento para o anúncio (PayPal), seria ótima… Percebo que isso não é trivial devido à configuração da estrutura de preços, link de pagamento, etc.
-
Exibir o ano na data do post de forma destacada.
-
Capacidade do administrador de acessar um usuário e ver quem mais está ativo sob a mesma instalação do navegador (basicamente apenas cookies). Vejo que o Discourse já possui isso, mas baseado no IP, o que hoje em dia não é eficaz (muitas pessoas usam dados móveis, especialmente aquelas que desejam criar múltiplas identidades). Li este tópico
Handling trolls with multiple accounts over VPNs - #18 by ljpp
e outros, então claramente muitos outros já passaram por isso, e não há soluções para alguém que seja esperto com VPNs etc.; eles tendem a se revelar eventualmente pelo estilo de postagem ou por postar algo realmente ofensivo, o que resulta em banimento. Também sugiro que detectar o mesmo hash de senha seria uma vantagem, pois muitas pessoas usam a mesma senha para todos os seus personagens
-
Para administradores, uma lista linear simples de posts, permitindo uma revisão muito rápida dos últimos x posts em um celular. Imagino que isso possa ser feito com um pouco de código acessando diretamente o banco de dados, em um subdomínio. Dentro dessa lista, ter botões DELETAR e BANIR, para que alguém que poste algo ofensivo (infelizmente não é incomum em fóruns) possa ser removido rapidamente.
-
Isso pode já estar implementado, pelo que consigo ver: mesclagem por administrador de posts selecionados (ou todos) de um tópico para outro, resultando nos posts no tópico de destino na ordem cronológica correta. Percebo que isso pode quebrar links para posts, a menos que o link seja exclusivo do site (por exemplo, seja o número do post no banco de dados, e não o número do post no tópico).
-
Geração por administrador de uma lista de e-mails em CSV de todos que fizeram login nos últimos 12 ou 24 meses. Descobrimos que enviar e-mails para pessoas mais antigas (mais inativas) aumenta muito as chances de ser listado em listas negras (RBL etc.), apesar de o envio (principalmente sobre encontros, algumas vezes por ano) ser feito lentamente, apenas 1 e-mail por minuto, para minimizar o risco (também bloqueamos no envio todos os endereços descartáveis conhecidos, como sharklasers.com).
-
Uma configuração no perfil do usuário para escolher se deseja receber esses e-mails, para conformidade com o GDPR.
Acabei de ler o tópico aqui sobre o GDPR. Pelo que entendi no Reino Unido, um postador não tem o direito de exigir a exclusão de seus posts. Ele pode ter seus dados de login removidos. Gostaria de saber se o Discourse é de alguma forma adicionalmente vulnerável nessa área. Em nosso fórum, praticamente todo mundo usa um apelido de qualquer forma.
-
Capacidade do administrador de ler mensagens privadas (PMs). Isso é essencial porque muitos spammers se cadastram e apenas enviam PMs, sem postar. Não saberíamos disso a menos que alguém se queixasse, mas muitos novos cadastros são suspeitos (embora não claramente), então os observamos por um tempo… Por exemplo, temos uma configuração de País no perfil do usuário que deve ser especificada durante o cadastro, e alguém que coloca Alemanha lá, mas está com um IP tailandês, provavelmente é suspeito, mas poderia ser um alemão na Tailândia!
-
Uma configuração de País para a localização do usuário, obrigatória no cadastro (percebo que eles podem colocar o que quiserem lá).
Percebo que, se forem feitas modificações no código, aplicar atualizações pode ser difícil ou até impossível…
Cadastros suspeitos são um problema real. Estimo que, atualmente, 10-20% dos cadastros sejam suspeitos, então, se nada for feito, você terá muitos problemas no futuro. O comportamento usual é se cadastrar, esperar uma semana e depois inundar o fórum com spam.
Infelizmente, não sei nada sobre Ruby. Fiz um pouquinho de PHP. Minha experiência em TI é mais geral: servidores POP e SMTP, máquinas virtuais (VMs), VPNs, FTP, SPF, DKIM, configurações de roteador. HTML simples, mas sem CSS… Minha antiga experiência em TI é em hardware e software de sistemas embarcados (assembler e C). O cara que escreveu o software original oferece ajuda para migrar o banco de dados. Tenho alguns contatos que podem fazer outras partes, mas não tenho expertise direta em Ruby no momento… Tenho alguns sites rodando em um servidor Linode que funcionou muito bem, então essa seria a primeira escolha para hospedagem.
Obrigado antecipadamente por ler até aqui e, talvez, por dar algumas dicas sobre quanto disso já está disponível e quanto trabalho seria necessário para fazer o restante, ou algo similar ![]()