Configurar el servidor web

Hay un par de ajustes que se deben establecer antes de ejecutar el servidor web de Quillix por primera vez. Si utiliza el instalador de Quillix, éste establecerá los valores por usted. Estos ajustes se pueden encontrar en el archivo appsettings.json de la carpeta de instalación del sitio web. Los ajustes son "DBType" y "ConnectionString". Appsettings.json es un archivo de texto de datos JSON para que pueda editarlo con cualquier editor de texto.

            DBType es un valor de cadena y debe establecerse en "MSSQL" o "MYSQL". Utilice "MSSQL" si utiliza una base de datos de Microsoft SQL Server. Utilice "MYSQL" si está utilizando MySQL o una base de datos compatible como Amazon Aurora o MariaDB.

            ConnectionString es una cadena de conexión de ODBC para conectarse a la base de datos. Primero debe crear un DSN de sistema ODBC de 64 bits para su base de datos de QCM. Quillix Web Server es una aplicación de 64 bits y no puede acceder a un DSN de 32 bits. Además, normalmente se ejecutará detrás de un servidor Web (IIS, Apache, Nginx, etc.), por lo que necesita un DSN de sistema, no de usuario. A continuación, establezca ConnectionString en la cadena de conexión utilizada para conectarse a la base de datos. Esta cadena generalmente tendrá el siguiente aspecto:

            DSN=myDsn;Uid=myUsername;Pwd=myPassword;

Donde myDsn, myUsername y myPassword se reemplazan por sus ajustes específicos. Si va a cambiar manualmente el archivo, ConnectionString será visible como texto sin formato. Si usa la Utilidad de conexión de base de datos para establecer ConnectionString, se cifrará.

Personalizar el sitio web

Hay varios valores que se pueden ajustar para personalizar el comportamiento de su sitio web de administración de contenido de Quillix. Estos ajustes se encuentran en el archivo appsettings.json de la carpeta de instalación del sitio Web y en los archivos resource.js y shortcuts.js en la carpeta wwwroot/scripts.

appsettings.json

Su archivo appsettings.json debería tener un aspecto similar a este:

{

  "AppSettings": {

    "Secret": "/lkLI0+ksvdxHNwNeIvq82dTNljtDuoxA9BwfIt/8anhfrNLFsGe1DixfVPzdkTe2ITqAwCIL2lpSHcK1JjMObtGzb8lnhiJMiuXopuGzpAoevdMs5PJfQDWOSECdE6BP2mWRAAXtQFoSeqT03lb4B0OCVeMalwdH5tfFYpMkHI=",

    "ConnectionString": "ugeSnFlU+7c2gtz6X1yO6CLZvtA6b5rsDB1VTLndCXU=",

    "AllowRememberMe": true,

    "RememberMeLength": 30,

    "ClearRememberMeOnLogin": true,

    "DBType": "MSSQL",

    "Version": "5.0.001",

    "Tracing": false,

    "TraceFile": "d:/qdata/trace.txt",

    "UniversalDPI": 200,

    "UniversalMaxSizeToRender": 1000,

    "UniversalDPIForBigFiles": 0,

    "PDFDPI": 200,

    "PDFMaxSizeToRender": 1000,

    "PDFDPIForBigFiles": 0,

    "AudioMaxSize": 200,

    "VideoMaxSize": 1000,

    "DefaultGroupID": 99,

    "AppendToDocs": true

  },

  "Logging"

    "LogLevel"

      "Default": "Warning"

    }

  },

  "AllowedHosts"

}

Secret

Quillix Web Server utiliza Tokens Web JSON (JWT) para proteger el acceso a la aplicación. Al ingresar, se le asigna un JWT exclusivo a cada usuario. Ese token se devuelve al servidor con cada solicitud web y el servidor lo autentifica para asegurarse de que el usuario tiene acceso al recurso u operación que está solicitando. Los JWT se cifran y Secret es una cadena aleatoria utilizada para la operación de cifrado. Si desea cambiar este valor, utilice un generador de números aleatorios criptográficamente seguro y cree un valor de 1024 bits codificado en Base64.

ConnectionString & DBType

Estos valores se describen en detalle en la sección "Configurar el servidor web" arriba. El ConnectString que se muestra aquí se ha cifrado y es similar a lo que debería ver después de instalar el servidor web. El instalador cifra este valor (Utilidad de conexión de base de datos), pero puede editar el valor e introducir una cadena de conexión ODBC de texto sin formato. Si introduce una cadena de conexión de texto sin formato, NO se cifrará y estará siempre visible como texto sin formato.

AllowRememberMe, RememberMeLength & ClearRememberMeOnLogin

La función RememberMe permite a un usuario iniciar el sitio web sin iniciar sesión. Se puede habilitar ajustando AllowRememberMe en 'true' aquí y en resource.js (ver abajo). Cuando está habilitado, el sistema escribe una cookie en el sistema del usuario al ingresar. La cookie identifica de forma única a este usuario y se utiliza en el siguiente ingreso para autentificar al usuario sin pasar por el proceso de ingreso. RememberMeLength es el número de días que será válida la cookie. Después de ese número de días, el usuario debe ingresar de nuevo.

La cookie presenta un riesgo para la seguridad. Si un atacante pudo copiar la cookie en otro sistema, podría suplantar al usuario sin conocer las credenciales de ingreso. Esta es la razón por la que existe ClearRememberMeOnLogin. Si se establece en 'true', este ajuste invalida todas las cookies al ingresar. Si el usuario inicia sesión antes que el atacante, se invalidaría la cookie del atacante y no podría ingresar. Si el atacante inició sesión primero, el usuario obtendría un error al ingresar (indicando que su token RememberMe no era válido). El usuario debe informar de esto al personal de TI de modo que pueda invalidar todos los Tokens de ese usuario (esto se puede hacer en el Centro de control). Puesto que ClearRememberMeOnLogin borra todos los tokens, un usuario solo puede usar RememberMe en un dispositivo a la vez mientras está habilitada esta característica. También es útil un RememberMeLength breve para mitigar el peligro de RememberMe, pero reduce la utilidad para el usuario al exigir que ingrese con más frecuencia.

Versión

Identifica la versión de QCM y no se debe cambiar.

Seguimiento y TraceFile

El seguimiento se puede establecer en 'true' para habilitar el seguimiento o en false para deshabilitarlo. Si se establece en 'true', también debe proporcionar un valor para TraceFile. La ruta de acceso a TraceFile ya debe existir, pero el servidor web creará el archivo si no existe o le hará un anexo si ya existe. Estos ajustes harán más lento el rendimiento del servidor web y solo se deben usar para diagnosticar una condición de problema.

Universal/PDF/Audio/Video

Todos los archivos agregados a un depósito de Quillix Content Management son de uno de los cinco tipos:

            Imagen              (JPEG, TIFF, PNG, GIF, BMP)

            PDF     

            Audio               (MP3, AAC, WAV, etc.)

            Video               (MP4, MOV, FLV, etc.)

            Universal         (cualquier otro)

Los siguientes ajustes modifican el procesamiento de estos archivos.

UniversalDPI, UniversalMaxSizeToRender & UniversalDPIForBigFiles

Estos ajustes controlan la interpretación de los archivos universales. Algunos archivos universales (como los archivos ZIP, EXE o DLL) no se pueden interpretar y siempre devolverán la imagen predeterminada (default.png en la carpeta de instalación del sitio Web, el mismo lugar en el que puede encontrar appsettings.json). Sin embargo, muchos archivos universales pueden interpretarse, y lo harán, y se devolverán al cliente web para su visualización. Esto incluye documentos de Office (tanto de Microsoft Office como de OpenOffice), archivos de texto, HTML y correo electrónico y otros.

La forma en que se interpreta el archivo viene determinada por:

si (File.length > UniversalMaxSizeToRender * 1024) entonces

si (UniversalDPIForBigFiles == 0) entonces

no interpretar este archivo – devuelve toobig.png

si no

interpretar el archivo en UniversalDPIForBigFiles

si no

interpretar el archivo en UniversalDPI

Los valores DPI más grandes tardan más en procesarse y los archivos más grandes tardan más en interpretarse, por lo que debe modificar estos valores para obtener un rendimiento aceptable para los usuarios. UniversalDPIForBigFiles debe ser menor que UniversalDPI y se recomienda que se establezca en 0 para deshabilitar la interpretación de archivos de gran tamaño. UniversalMaxSizeToRender está en KBytes por lo que un valor de 1000 corresponde a una longitud de archivo de 1 MB. Los archivos que no se interpretan aún pueden descargarse y visualizarse en un visor nativo (siempre que el usuario tenga el privilegio 'descargar').

PDFDPI, PDFMaxSizeToRender y PDFDPIForBigFiles

Estos ajustes controlan la interpretación de archivos PDF y funcionan igual que los ajustes universales anteriores.

La forma en que se interpreta el archivo viene determinada por:

si (File.length > PDFMaxSizeToRender * 1024) entonces

si (PDFDPIForBigFiles == 0) entonces

no interpretar este archivo – devuelve toobig.png

si no

interpretar el archivo en PDFDPIForBigFiles

si no

interpretar el archivo en PDFDPI

Los valores DPI más grandes tardan más en procesarse y los archivos más grandes tardan más en interpretarse, por lo que debe modificar estos valores para obtener un rendimiento aceptable para los usuarios. PDFDPIForBigFiles debe ser más pequeño que PDFDPI y se recomienda que se ajuste en 0 para deshabilitar la interpretación de archivos grandes. PDFMaxSizeToRender está en KBytes por lo que un valor de 1000 corresponde a una longitud de archivo de 1 MB. Los archivos que no se interpretan aún pueden descargarse y visualizarse en un visor nativo (siempre que el usuario tenga el privilegio 'descargar').

AudioMaxSize

Los archivos de audio normalmente se muestran en el cliente web mediante el elemento HTML de audio y se pueden reproducir en el navegador. Los archivos de audio que sean mayores que este valor no se enviarán al navegador y se reemplazarán por la imagen predeterminada (default.png). AudioMaxSize está en MBytes por lo que un valor de 1 corresponde a una longitud de archivo de 1 MB. Los archivos grandes aún pueden descargarse y verse en un visor nativo (siempre que el usuario tenga el privilegio 'descargar').

VideoMaxSize

Los archivos de video normalmente se muestran en el cliente web mediante el elemento HTML de audio y se pueden reproducir en el navegador. Los archivos de video que sean mayores que este valor no se enviarán al navegador y se reemplazarán por la imagen predeterminada (default.png). VideoMaxSize está en MBytes por lo que un valor de 1 corresponde a una longitud de archivo de 1 MB. Los archivos grandes aún pueden descargarse y verse en un visor nativo (siempre que el usuario tenga el privilegio 'descargar').

DefaultGroupID

QCM Web ya no utiliza GroupIDs para la seguridad de los documentos. Pero, para admitir la interacción con el producto QCM de escritorio, se asignarán los documentos archivados por QCM Web a DefaultGroupID.

AppendToDocs

Este valor se establece en true (verdadero) o false (falso). Cuando es true, el servidor realizará una búsqueda antes de crear un documento. Si se encuentra un documento con los mismos valores de índice, los archivos nuevos se anexarán al documento existente. Cuando es false, el servidor siempre creará un nuevo documento al indexar nuevos archivos y puede tener varios documentos con valores de índice idénticos en el depósito. Esta configuración se aplica tanto a los nuevos archivos enviados a través del QCM QSX con Quillix Capture como a los nuevos archivos indexados a través de QCM Web.

Logging

Esta sección controla las opciones de registro .Net. Solo cambie esto cuando lo indique el Soporte técnico de Prevalent.

AllowedHosts

Esta configuración protege contra los ataques de encabezado de host enumerando (lista delimitada por punto y coma) los valores de host válidos para este servidor web. Si el servidor web Quillix está detrás de IIS, Apache, Nginx u otro servidor web (como se recomienda), se debe configurar de modo que se proteja contra ataques de encabezado de host. Si Quillix Web Server se ejecuta autoalojado, asegúrese de establecer este valor en los nombres de host adecuados para su sitio.

 

resource.js

AllowRememberMe

Esta configuración solo muestra u oculta el control en la página de ingreso. También debe establecer los valores en appsettings.json como se describe arriba. Un valor de 'true' mostrará el control mientras que un valor de 'false' ocultará el control.

AllowInactivityTimeout e InactivityTimeout

Esta configuración controla si los usuarios terminan la sesión automáticamente debido a inactividad. Un valor de 'false' significa que los usuarios nunca terminan la sesión automáticamente. Un valor de 'true' dará lugar al cierre de sesión automático después del número de minutos InactivityTimeout. En realidad, el InactivityTimeout estará cerca de un múltiplo de 3. Se comprueba durante el método 'refreshToken' que se programa cada 3 minutos. Si el sistema está ocupado, no se ejecutará 'refreshToken' exactamente en 3 minutos, sino que se ejecutará en algún momento después, cuando el sistema esté menos ocupado.

MaskChar

El carácter de marcador de posición utilizado por las máscaras de campo para las posiciones de caracteres 'no rellenados'. Este carácter no puede aparecer en el valor de campo introducido. Por lo tanto, si necesita el carácter predeterminado "_" en los valores de campo, debe cambiar esta configuración a un carácter diferente.

ChunkSize

En KBytes. Los archivos más pequeños que éste se transfieren al servidor en un bloque. Los archivos más grandes que éste se dividen en 'fragmentos' de este tamaño y se envían una pieza a la vez. Los tamaños de fragmento más grandes pueden mejorar el rendimiento de la red (porque hay menos llamadas para transferir el archivo). Pero, dado que cada fragmento se carga en la memoria, los fragmentos más grandes usarán más memoria en el cliente y el servidor. El valor predeterminado debe proporcionar un buen rendimiento en la mayoría de las situaciones.

AllowInPlaceEdits

Esta configuración controla si los campos de documento se pueden editar en la cuadrícula de resultados. Un valor de 'true' permite editar en la cuadrícula de resultados. Un valor de 'false' significa que los campos solo se pueden editar desde la ventana emergente.

 

shortcuts.js

Todos los métodos abreviados de teclado se definen en este archivo. Cada uno está contenido en un bloque similar a este:

// Execute search [alt - e]

var ExecuteSearchCode = 69;

var ExecuteSearchAlt = true;

var ExecuteSearchShift = false;

var ExecuteSearchShortCutText = " [alt - e]";

Este bloque define el acceso directo para el botón 'Ejecutar' en la pestaña 'Buscar'. Para cambiar el acceso directo a una pulsación de tecla diferente, cambie 'ExecuteSearchCode' por el código ASCII de la nueva tecla y establezca 'ExecuteSearchAlt' y 'ExecuteSearchShift' como desee. Por último, cambie 'ExecuteSearchShortCutText' para mostrar al usuario cuál es el acceso directo. Cualquier acceso directo en este archivo se puede modificar de esta manera.

default.png & toobig.png

Estos archivos se pueden encontrar en la carpeta de instalación del sitio web. Se muestra Toobig.png cuando un archivo PDF o Universal es mayor que el ajuste MaxRender y DPIForBigFiles es 0. Se muestra Default.png cuando no se puede representar un archivo universal o se ha producido un error al interpretar. Puede reemplazar uno o ambos archivos con imágenes de su propio diseño si lo desea.

 

Siguientes pasos