Scripts nos posts?

Olá,

Alguma forma de executar scripts em posts limitados apenas a administradores?

Já tentei configurar antes e acabei travando meu site no PuTTY.

Tenha uma boa quarta-feira
Olle

Houve uma postagem sobre este assunto há alguns anos, mas tenho esperança de que haja uma maneira de fazer isso.

https://meta.discourse.org/t/adding-a-javascript-in-a-post/130019/3

Olle

@Olle11 pode ajudar se você detalhar mais o que está tentando alcançar.

Não há como permitir isso de forma ad hoc através do Composer, mas dependendo do seu caso de uso, pode haver soluções alternativas.

Por exemplo, o plugin Poll essencialmente executa JavaScript em uma Postagem (entre outras coisas).

2 curtidas

Espero executar um script através de HTML ou React que possa mostrar widgets em tempo real nas postagens principais.

Por exemplo, um widget mostrando o clima ao vivo em uma cidade através de um script de widget HTML.

O plugin Poll é utilizável para este caso?

Atenciosamente,
Olle

1 curtida

Não, eu estava apenas usando isso como um exemplo. Dê uma olhada no código-fonte.

Você pode tentar usar um iframe se puder hospedar o JavaScript em outro lugar.

Se quiser uma integração mais estreita, será necessário considerar o uso do EmberJS.

3 curtidas

Esta é provavelmente a resposta mais acessível se você quiser conteúdo na postagem em oposição a, por exemplo, um banner no topo.

Por exemplo, peguei um dos itens da página inicial do CodePen (já que está em nossos allowed_iframes) e o incorporei abaixo:

source

6 curtidas

Parece que o script que preciso não permite iframe devido a X-FRAME-Options: DENY.

1 curtida

Talvez algo nestas linhas para permitir um script em execução no Discourse @merefield @supermathie?

App.yml:
DISCOURSE_ALLOW_UNSAFE_HTML: true

  • volume:
    host: /var/discourse/shared/standalone/nginx_custom.conf
    guest: /etc/nginx/conf.d/custom.conf

Configuração do Nginx para CSP:
add_header Content-Security-Policy “script-src ‘self’ ‘https://webadress.com’ ‘unsafe-inline’ ‘unsafe-eval’;”;

Estou tentando adicionar a configuração do Nginx, mas nem ‘unsafe-inline’ nem o https aparecem no CSP ao verificar com curl. ‘unsafe-eval’ é adicionado pelo admin.

Editar: NÃO SEGURO

Remover as proteções que o Discourse tem para impedir isso é uma ideia terrível.

Por isso, todos estão tentando orientar você para as maneiras sugeridas de fazer isso.

Você deve usar um tema ou componente de tema para adicionar scripts às páginas.

7 curtidas

Posso usar um tema ou um componente de tema para adicionar script a uma postagem?

Como posso incluir ‘unsafe-inline’ na CSP para fazer o script funcionar?

Você poderia. O script em si precisaria ficar fora da postagem, ou talvez você pudesse fazer com que ele decorasse aspectos específicos das postagens.

É difícil saber exatamente o que você quer sem detalhes.

Essa é uma má ideia e você não deveria fazer isso.

5 curtidas

Em relação ao CSP e ao que adicionei ao app.yml, removerei o unsafe_html: true, o volume do nginx e a configuração do nginx para CSP do site porque não é seguro.

Talvez um componente de tema funcione, hmm.

Exatamente qual script você quer executar?

Onde você quer executá-lo?

É para ser em um post específico? Ou em outro lugar da página? Quais parâmetros precisam ser passados? É diferente em cada post? Categoria?

2 curtidas

O iframe pode funcionar. Preciso atualizar o CSP e unsafe_html para que o site seja seguro, pois o CSP e as outras soluções que tentei não são seguras

Obrigado pela contribuição. O Iframe pode funcionar pelo menos por enquanto até que eu encontre uma solução melhor.

Olhando o script, você não pode executá-lo globalmente. Ele requer carregamento no local com opções.

Eu fiz um TC simples: GitHub - Arkshine/discourse-tradingview-chart

Para facilitar a alteração das opções, você pode copiá-las e colá-las diretamente do site dentro de [wrap]..[/wrap].

Por padrão, ele força a proporção para ser 16/9, ocupará todo o espaço de largura e a altura é automática. O script permite especificar largura/altura, que também funcionará.

Eu sugiro usar a opção show_popup_button: true. Ela fornecerá uma maneira de visualizar o gráfico em tela cheia em uma nova janela.

image

Eu adicionei duas opções:

8 curtidas

Desculpe, mas apenas um :heart: não é suficiente para transmitir. . .
Cara. Isso é incrível.

3 curtidas