Botão "Mostrar Post Completo" não funciona em instalações de subpasta

Ele consegue :slight_smile:

Você consegue acessar a instância em que isso está rodando? Se sim, você poderia executar o seguinte e me dizer o resultado:

./launcher enter app
rails c
TopicEmbed.find_by(topic_id: 157441).as_json
discourse(prod)> TopicEmbed.find_by(topic_id: 157441).as_json
Serializing ActiveRecord models (TopicEmbed) without specifying fields is not allowed. Use a Serializer, or pass the :only option to #serializable_hash. More info: ``https://meta.discourse.org/t/-/314495
=>
{"id"=>56685,
"topic_id"=>157441,
"post_id"=>483289,
"embed_url"=>
"``https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”``,
"content_sha1"=>nil,
"created_at"=>"2025-12-08T17:54:07.585Z",
"updated_at"=>"2025-12-09T18:04:33.539Z",
"deleted_at"=>nil,
"deleted_by_id"=>nil,
"embed_content_cache"=>""}
discourse(prod)>

Você editou a saída antes de compartilhá-la? Apenas olhando o valor de embed_url, ele está como

“``https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”``

Você poderia apenas executar o mesmo comando novamente, mas desta vez:

./launcher enter app
rails c
TopicEmbed.find_by(topic_id: 157441).embed_url

Se o que você compartilhou é de fato o valor de embed_url no seu banco de dados, então esse é o problema, e eu farei um pequeno PR para discourse/discourse para lidar com casos extremos como este, onde o embed_url acabou em um estado malformado.

Nop! Just copied and pasted it here.

About this backticks at the begining and ending of the url, i think it was just an error trying to format the text here in the topic, using the code button.

discourse(prod)> TopicEmbed.find_by(topic_id: 157441).embed_url
=> “https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”
discourse(prod)>

Here you can see a topic that was created using Embed JS:

https://tecnoblog.net/comunidade/t/microsoft-edge-ganha-copilot-mode-que-promete-realizar-tarefas-usando-ia-tecnoblog/157661

The “Show Full Post” doesn’t work in this topic either.

1 curtida

Então todo o problema aqui é porque o PR acima começou a remover barras finais do TopicEmbed em janeiro deste ano? Eu me sinto dividido sobre essa mudança. Eu preferiria que respeitássemos o que o administrador nos envia, para ser honesto.

Eu acho que esta é a raiz dos nossos problemas.

Você pode, por favor, executar o seguinte @Thiago_Mobilon

url = "https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento"

fd = FinalDestination.new(url, validate_uri: true, max_redirects: 5, follow_canonical: true)

uri = fd.resolve

puts uri

html = FinalDestination::HTTP.get(uri)

puts html.truncate(200)

O fd.resolve deve ser capaz de adicionar a barra final na linha puts uri. Receio que esteja falhando.

1 curtida
discourse(prod)> url = "https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento"
discourse(prod)> 
discourse(prod)> fd = FinalDestination.new(url, validate_uri: true, max_redirects: 5, follow_canonical: true)
discourse(prod)> 
discourse(prod)> uri = fd.resolve
discourse(prod)> 
discourse(prod)> puts uri
discourse(prod)> 
discourse(prod)> html = FinalDestination::HTTP.get(uri)
discourse(prod)> 
discourse(prod)> puts html.truncate(200)
https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento

=> nil
1 curtida

De fato, não está seguindo os redirecionamentos. O fórum está rodando no mesmo servidor/espaço de IP que o blog? Isso pode estar acionando nossa proteção SSRF.

Se for esse o caso, você precisa permitir isso definindo allowed_internal_hosts.

2 curtidas

Note que

O motivo pelo qual fizemos essa mudança é que havia uma inconsistência entre como os embeds do WP Discourse e os embeds de javascript funcionavam. Os embeds de javascript sempre normalizaram a URL. Os embeds do WP Discourse chegavam por uma rota diferente e não estavam normalizando a URL (até fazermos a mudança). Isso levou a algumas outras inconsistências.

2 curtidas

Você quer dizer assim? (Já estava assim)

Não, está em um VPS dedicado. A máquina do blog está proxyando o tráfego (nginx) do subdiretório para o VPS do Discourse.

Outro problema é que, quando executo um curl para a API, procurando o ID do tópico de uma URL de incorporação (embed URL), não consigo encontrá-lo por causa da barra final (trailing slash). O Discourse retorna uma página 404.

Mas se eu remover a barra final, ele retorna o valor:

mobilon@Thiagos-MacBook-Pro ~ % curl 'https://tecnoblog.net/comunidade/embed/info?embed_url=https://tecnoblog.net/noticias/anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina/' -H 'API-KEY: <API KEY>' -H 'API-USERNAME: <USERNAME>'

<!DOCTYPE html>

<html lang="pt-BR">

<head>

  <meta charset="utf-8">

  <title>Página não encontrada - Tecnoblog Comunidade</title>
mobilon@Thiagos-MacBook-Pro ~ % curl 'https://tecnoblog.net/comunidade/embed/info?embed_url=https://tecnoblog.net/noticias/anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina' -H 'API-KEY: <API KEY>' -H 'API-USERNAME: <USERNAME>' 

{"topic_id":157645,"post_id":484103,"topic_slug":"anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina-tecnoblog","comment_count":15}%     

Para funcionar, eu precisaria fazer um str_replace no WordPress, para remover a barra final do permalink, antes de verificar. Mas isso não faz sentido, o URL canônico tem a barra final…

Na prática, o Discourse está normalizando o permalink para um URL que não existe… a versão normalizada deveria ser a que tem a barra final.

1 curtida

Graças ao @Thiago_Mobilon, encontrei o problema e tenho uma correção proposta

2 curtidas

@Thiago_Mobilon a correção foi implementada, você pode atualizar, por favor?

1 curtida

Funciona, valeu Falco!

Mas ainda estou preocupado com as URLs sem a barra final, pelos motivos mencionados no meu post anterior. Devo abrir um novo tópico sobre isso @angus?

Obrigado, fico feliz em saber.

Claro! Isso não afetará o recurso “Postagem Completa”, pois agora podemos seguir redirecionamentos em sites no mesmo domínio do fórum, mas você pode continuar em um novo tópico para outras preocupações.

3 curtidas