¿Scripts en las publicaciones?

Hola,

¿Hay alguna forma de ejecutar scripts en publicaciones limitado solo a administradores?

He intentado configurarlo antes y mi sitio web se bloqueó en PuTTY.

Que tengas un buen miércoles
Olle

Hubo una publicación sobre este asunto hace un par de años, pero tengo la esperanza de que haya una manera de hacer esto.

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

Olle

@Olle11 podría ayudar si detallas más lo que intentas lograr.

No hay forma de permitir esto de forma ad hoc a través del Composer, pero dependiendo de tu caso de uso, podría haber soluciones alternativas.

Por ejemplo, el plugin Poll ejecuta esencialmente JavaScript en una publicación (entre otras cosas).

2 Me gusta

Espero ejecutar un script a través de HTML o React que pueda mostrar widgets en vivo en las publicaciones principales.

Por ejemplo, un widget que muestre el clima en vivo en una ciudad a través de un script de widget HTML.

¿Es utilizable el plugin Poll para este caso?

Saludos cordiales
Olle

1 me gusta

No, solo estaba usando eso como ejemplo. Echa un vistazo a su código fuente.

Podrías intentar usar un iFrame si puedes alojar el JavaScript en otro lugar.

Si deseas una integración más estrecha, deberás considerar usar EmberJS.

3 Me gusta

Esta es probablemente la respuesta más accesible si quieres contenido en la publicación en lugar de, por ejemplo, un banner en la parte superior.

Por ejemplo, tomé uno de los elementos de la página principal de CodePen (ya que está en nuestros allowed_iframes) y lo incrusté a continuación:

source

6 Me gusta

Parece que el script que necesito no permite iframes debido a X-FRAME-Options: DENY.

1 me gusta

Quizás algo como esto para permitir que un script se ejecute en 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

Configuración de Nginx para CSP:
add_header Content-Security-Policy “script-src ‘self’ ‘https://webadress.com’ ‘unsafe-inline’ ‘unsafe-eval’;”;

Estoy intentando añadir la configuración de Nginx pero ni ‘unsafe-inline’ ni https aparecen en la CSP al comprobar con curl. ‘unsafe-eval’ se añade a través de administración.

Editar: NO ES SEGURO

Eliminar las protecciones que Discourse tiene para evitar esto es una muy mala idea.

Por eso todos están tratando de dirigirte hacia las formas sugeridas de hacer esto.

Deberías usar un tema o un componente de tema para añadir scripts a las páginas.

7 Me gusta

¿Puedo usar un tema o un componente de tema para agregar scripts a una publicación?

¿Cómo puedo incluir ‘unsafe-inline’ en la CSP para que el script funcione?

Podrías. El script en sí tendría que estar fuera de la publicación, o quizás podrías hacer que decore aspectos específicos de las publicaciones.

Es difícil saber exactamente lo que quieres sin detalles.

Es una mala idea y no deberías hacerlo.

5 Me gusta

Con respecto a CSP y lo que agregué a app.yml, eliminaré unsafe_html: true, el volumen de nginx y la configuración de nginx para CSP del sitio porque no es seguro.

Quizás un componente temático funcione hmm

¿Qué script quieres ejecutar exactamente?

¿Dónde quieres ejecutarlo?

¿Debe ser en una publicación en particular o en algún otro lugar de la página? ¿Qué parámetros deben pasarse? ¿Es diferente en cada publicación? ¿Categoría?

2 Me gusta

Es posible que funcione el iframe. Necesito actualizar el CSP y unsafe_html para que el sitio web sea seguro porque CSP y las otras soluciones que intenté no son seguras

Gracias por tu aporte. El Iframe podría funcionar al menos por ahora hasta que encuentre una mejor solución.

Al mirar el script, no puedes ejecutarlo globalmente. Requiere cargarse en el lugar con opciones.

Hice un TC simple: GitHub - Arkshine/discourse-tradingview-chart

Para facilitar el cambio de las opciones, puedes copiarlas y pegarlas directamente desde el sitio dentro de [wrap]..[/wrap].

Por defecto, fuerza la relación de aspecto a 16/9, ocupará todo el ancho y la altura es automática. El script permite especificar un ancho/alto, también funcionará.

Sugeriría usar la opción show_popup_button: true. Te proporcionará una forma de ver el gráfico a pantalla completa en una nueva ventana.

image

Añadí dos opciones:

8 Me gusta

Lo siento, pero un simple :heart: no es suficiente para transmitir . . .
Tío. Eso es increíble.

3 Me gusta