Error con bloques de código: 403 Forbidden

Tengo problemas persistentes al intentar crear o editar una publicación con bloques de código. Al intentar crear o editar una publicación con el bloque de código

(access node)$ spack list openfoam@2306
...
Variants:
    Name [Default]            When    Allowed values    Description
    ======================    ====    ==============    ==================================================

    build_system [generic]    --      generic           Build systems supported by the package
    int64 [off]               --      on, off           With 64-bit labels
    kahip [off]               --      on, off           With kahip decomposition
    knl [off]                 --      on, off           Use KNL compiler settings
    metis [off]               --      on, off           With metis decomposition
    mgridgen [off]            --      on, off           With mgridgen support
    paraview [off]            --      on, off           Build paraview plugins and runtime post-processing
    precision [dp]            --      sp, dp, spdp      Precision option
    scotch [on]               --      on, off           With scotch/ptscotch decomposition
    source [on]               --      on, off           Install library/application sources and tutorials
    vtk [off]                 --      on, off           With VTK runTimePostProcessing
    zoltan [off]              --      on, off           With zoltan renumbering
...

Recibo un error 403 Forbidden.

Markdown no admite resaltado de código; agregar cualquier especificación de sintaxis genera un error 403 Forbidden.

Los segmentos de código en línea también causan 403 Forbidden en algunas ubicaciones, pero no en todas, en relación con otros bloques de código.

La versión instalada es 3.1.1 ( 0612f0d5b6 ).

¿Están relacionados estos problemas y qué podría estar causando este comportamiento?

Publicación de ejemplo: Compiling OpenFOAM with Spack - 📚 Knowledge nuggets - HPC discourse

Resultado previsto:

Hay algunos problemas al instalar OpenFOAM de OpenCFD con Spack.

Se configuró un entorno para administrar los paquetes con Spack siguiendo las instrucciones del tutorial de UL HPC. En resumen, se definieron las siguientes dependencias para los paquetes SPACK,

(access node)$ cat << EOF > $SPACK_ROOT/etc/spack/packages.yaml
packages:
    slurm:
        externals:
        - spec: slurm@22.05.5
          prefix: /usr
        buildable: False
    libevent:
        externals:
        - spec: libevent@2.1.8
          prefix: /usr
        buildable: False
    pmix:
        externals:
        - spec: pmix@4.2.3
          prefix: /usr
        buildable: False
    hwloc:
        externals:
        - spec: hwloc@2.2.0
          prefix: /usr
        buildable: False
EOF

y se definieron las siguientes opciones para los directorios de caché de compilación,

(access)$ cat << EOF > $SPACK_ROOT/etc/spack/config.yaml
config:
    build_stage:
        - /dev/shm/$user/spack-stage
EOF

para acelerar la compilación utilizando el sistema de archivos de ramdisk. Antes de proceder a la instalación de OpenFOAM, la versión deseada de Open MPI se instala con el compilador del sistema:

(compute node)$ spack install -j openmpi@4.0.5 +pmi schedulers=slurm ^pmix@4.2.3 ^hwloc@2.2.0

La distribución de OpenFOAM se instala utilizando también el compilador del sistema. Los componentes disponibles de OpenFOAM son:

(access node)$ spack list openfoam@2306
...
Variants:
    Name [Default]            When    Allowed values    Description
    ======================    ====    ==============    ==================================================

    build_system [generic]    --      generic           Build systems supported by the package
    int64 [off]               --      on, off           With 64-bit labels
    kahip [off]               --      on, off           With kahip decomposition
    knl [off]                 --      on, off           Use KNL compiler settings
    metis [off]               --      on, off           With metis decomposition
    mgridgen [off]            --      on, off           With mgridgen support
    paraview [off]            --      on, off           Build paraview plugins and runtime post-processing
    precision [dp]            --      sp, dp, spdp      Precision option
    scotch [on]               --      on, off           With scotch/ptscotch decomposition
    source [on]               --      on, off           Install library/application sources and tutorials
    vtk [off]                 --      on, off           With VTK runTimePostProcessing
    zoltan [off]              --      on, off           With zoltan renumbering
...

OpenFOAM se instala utilizando todos los particionadores disponibles (metis, scotch, zoltan, kahip) y los componentes del generador de multi-mallas (mgridgen, sección 6.3.1.4 de la documentación) con el comando:

(compute node)$ spack install -j openfoam@2306 +source precision=dp +metis +scotch +zoltan +kahip +mgridgen ~knl ~int64 ~paraview ^openmpi@4.0.5

Sin embargo, la instalación resultante carece de múltiples componentes. Por ejemplo, al ejecutar la verificación manual posterior a la instalación en doc/Build.md,

# Crear el directorio de usuario "run":
mkdir -p "$FOAM_RUN"
# Cambiar al directorio de usuario "run":
run
# Copiar tutorial
cp -r "$FOAM_TUTORIALS"/incompressible/simpleFoam/pitzDaily ./
# Ejecutar el tutorial
( cd pitzDaily && blockMesh && simpleFoam )

faltan tanto el generador de mallas blockMesh como el solucionador simpleFoam.

Resulta que el particionador METIS causa que la instalación de múltiples componentes falle. Al recompilar solo con el particionador SCOTCH,

(compute node)$ spack install openfoam@2306 +source +scotch +mgridgen precision=dp ~int64 ~kahip ~knl ~metis ~paraview ~vtk ~zoltan ^openmpi@4.0.5

se resuelve el problema. Todos los componentes del solucionador se instalan, pero todavía faltan algunas utilidades.

Usamos el siguiente script para detectar todos los componentes faltantes:

(access node)$ cat list_spack_openfoam
#!/usr/bin/bash

set -euo pipefail

declare variant="${1}" # e.g. @2306%gcc@8.5.0 @2306+mgridgen
declare type="${2}" # solvers, utilities

find_makefile_directories() {
    local directory="${1}"

    find "${directory}" -type d | grep -E '\/Make$' || true
}

extract_executable_name() {
    local makefile_directory="${1}"

    cat "${makefile_directory}/files" | ( grep -E '^EXE[[:space:]]*=' || true ) | sed 's/^EXE[[:space:]]*=[[:space:]]*\$(FOAM_APPBIN)\///g'
}

main() {
    local variant="${1}"
    local type="${2}"

    local foam_location="$(spack location -i openfoam"${variant}")"

    local pagkage_directory=""
    local executable_name=""
    local installed=""
    local package_makefile_directory=""
    while read -r package_makefile_directory; do
        executable_name=$( extract_executable_name "${package_makefile_directory}" )

        if [ -n "${executable_name}" ]; then
            if [ -x "${foam_location}/platforms/linux64GccDPInt32-spack/bin/${executable_name}" ]; then
                installed="Y"
            else
                installed="N"
            fi
            package_directory="$( echo "${package_makefile_directory}" | xargs -I % dirname % )"

            echo "${installed} : ${executable_name} => ${package_directory#${foam_location}}"
        fi
    done < <( find_makefile_directories "${foam_location}/applications/${type}" )
}

main "${variant}" "${type}"

Una ejecución simple del script indica que faltan las siguientes utilidades:

(access node)$ ./list_spack_openfoam utilities @2306 | grep -E '^N'
N : addr2line => /applications/utilities/miscellaneous/OSspecific/addr2line
N : foamyHexMeshSurfaceSimplify => /applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify
N : foamyHexMeshBackgroundMesh => /applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh
N : cellSizeAndAlignmentGrid => /applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid
N : foamToCcm => /applications/utilities/mesh/conversion/ccm/foamToCcm
N : ccmToFoam => /applications/utilities/mesh/conversion/ccm/ccmToFoam

Es difícil decirlo, los problemas relacionados con Markdown no suelen ser 403, sino que tienen alguna retroalimentación de la interfaz de usuario para el autor. Nuestros errores 403 suelen estar relacionados con la autorización, como publicar en una categoría restringida o usar una etiqueta restringida.

Utilicé tus fragmentos de texto en una instancia normal de Discourse y parece estar bien.

¿Podría sugerirte que consultes con tu moderador para ver si existen tales restricciones?

4 Me gusta

Además de esto, casi siempre encontramos que los errores 403 como este al intentar crear publicaciones (¡especialmente con bloques de código!) se deben a un WAF demasiado celoso que cree que los bloques de código son shellcode o un ataque de inyección.

Noto que la instancia en cuestión parece estar protegida por un WAF:

○ → host hpc-discourse.uni.lu
hpc-discourse.uni.lu es un alias de fstc-waf2.uni.lu.

y por lo tanto sospecho firmemente que los errores 403 no provienen de Discourse, sino de tu WAF.

Inspeccionar las cabeceras de los errores en el navegador debería poder decirte la fuente del rechazo.

7 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.