Artículo
· 7 jul, 2020 Lectura de 6 min
Ejecución remota de código para InterSystems Caché

Introducción

Si gestionas múltiples instancias de Caché en varios servidores, puede que quieras ejecutar código arbitrario de una instancia de Caché en otra. Los administradores de sistemas y especialistas de soporte técnico también podrían querer ejecutar un código arbitrario en servidores Caché remotos. Para satisfacer estas necesidades, he desarrollado una herramienta especial llamada RCE.

En este artículo, analizaremos cuáles son las formas más comunes de resolver tareas similares y cómo RCE (Remote Code Execution) puede ser útil.

0 0
0 339

Tengo una operación con la clase EnsLib.HTTP.GenericOperation . Esta operación envía el siguiente mensaje json :

<HTTPMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema">

<Stream>

{ "resourceType":"Bundle", "id":"ec5ffdbe-3739-47e6-81e4-2b0498e99fb8", "meta":[ { "lastUpdated":"2020-09-20T15:04:17.764+02:00" }], "type":"searchset", "total":"1", "link":[ { "relation":"self", "url":"https:\/\/xxx:5665\/api\/fhir\/DSTU3\/CarePlan?encounter=861241" }], "entry":[ { "fullUrl":"https:\/\/xxx:5665\/api\/fhir\/DSTU3\/CarePlan\/23104", "resource":[ { "resourceType":"CarePlan", "id":"23104", "identifier":[ { "system":"urn:hcis:mrns", "value":"23104" }] }], "addresses":[ { "reference":"Condition\/76741" }], "subject":[ { "reference":"Patient\/10055765" }] }] }

</Stream><Type>

CG

</Type>

</HTTPMessage>

0 15
0 356

Tengo una clase que parsea un XML para extraer toda la información. En este XML hay un atributo que tiene saltos de línea:

<record date="2021-08-11T14:25:21" entity="TEXTO"><OBSERVACIONES o="" n="Esto es un texto de prueba:
1. Contiene información importante
2. Es útil para el usuario
3. Sigue siendo una prueba"/></record>

Usando %XML.TextReader puedo acceder a toda la información del XML, pero esos saltos de línea se pierden. Esto es lo que obtengo:

0 2
0 597
Artículo
· 19 jul, 2022 Lectura de 3 min
Índices únicos y valores nulos en InterSystems IRIS

Recientemente surgió un patrón interesante en torno a los índices únicos (en una discusión interna re: isc.rest) y me gustaría destacarlo para la Comunidad.

Como caso de uso motivador: supón que tienes una clase que representa un árbol, donde cada nodo también tiene un nombre, y queremos que los nodos sean únicos por nombre y nodo principal. Queremos que cada nodo raíz también tenga un nombre único. Una implementación natural sería:

0 0
0 96
Artículo
· 14 dic, 2022 Lectura de 1 min
Rutinas con privilegios y $Roles

Las rutinas con privilegios te permiten elevar los roles de un usuario mientras las utiliza. Estas rutinas con privilegios (Privileged Routine Application) pueden utilizarse con rutinas y también con clases / métodos.

Cuando las utilices, es importante asegurarse de incluir new $ROLES, antes de elevar los privilegios con AddRoles(). Por ejemplo:

 new $ROLES
 set status=$System.Security.AddRoles("MyPrivilegedRoutineApplication")

0 0
0 95

InterSystems está comprometida con ofrecer un soporte de alta calidad de todos sus productos, nuevos y antiguos. A medida que los productos envejecen – Caché tiene ahora 25 años – ese soporte va evolucionando.

InterSystems IRIS fue lanzado en 2018 y es el sucesor de Caché y Ensemble. Muchos clientes de Caché/Ensemble han migrado a IRIS o tienen planes de hacerlo en los próximos años. Los clientes que siguen usando Caché o Ensemble deben tener en cuenta este anuncio importante:

0 0
0 80
Artículo
· 4 dic, 2023 Lectura de 2 min
Cómo crear errores definidos por el usuario

Preguntas frecuentes de InterSystems

Para crear un error definido por el usuario, hemos de preparar un XML que describa el código de error y el mensaje correspondiente que desea utilizarse como error definido por el usuario.

Hemos de establecer el código de error como un número entero negativo.

0 0
0 53
Artículo
· 9 jul, 2019 Lectura de 24 min
Análisis de archivos docx mediante XSLT

¡Hola a tod@s!

La tarea de administrar documentos de Office (documentos docx, tablas xlsx y presentaciones pptx), es bastante complicada. En este artículo se ofrece una manera para analizar, crear y editar documentos usando únicamente XSLT y ZIP.

¿Por qué? docx es el formato más popular para documentos, por lo que la habilidad para generar y analizar este formato siempre puede ser de utilidad.

0 0
0 929
Artículo
· 6 dic, 2019 Lectura de 7 min
Haciendo una integración REST: Geolocalización


¡Hola a tod@s!

comparto los pasos necesarios para crear y probar una integración REST.

Lo primero que necesitamos es acceder al contrato que nos aporta el equipo que se encarga de desarrollar el sistema externo. En concreto de esta forma sabremos varias cosas:

0 0
0 215
Artículo
· 22 jul, 2020 Lectura de 8 min
El arte de mapear Globals para Clases (5 de 3)

Ejemplos de Mapeos

Obviamente, si tienes un cuatro artículo en la trilogía, debes apostar por las ganancias económicas y escribir el quinto, ¡así que aquí está!

Nota: Hace muchos años, Dan Shusman me dijo que el mapeo de globals es una forma de arte. No existe una manera correcta o incorrecta de hacerlo. El modo en que interpretes los datos te llevará al tipo de mapeo que realizas. Como siempre, existe más de una forma de llegar a la respuesta final. Según vayas revisando mis ejemplos, verás que hay algunos en los que se mapean el mismo tipo de datos, pero de distintas maneras.

0 0
0 147
Pregunta
· 23 sep, 2020
Problema con estructura JSON

Buenas

Tengo un problema al intentar realizar un json de un clase que he creado para el recurso FHIR Appointment, el problema lo tengo al nivel del actor, si miro la documentación de FHiR puedo acceder al siguiente ejemplo, para simplificar el entendimiento solo voy a poner en el json y en las clases los elementos que hago referencia.

0 6
0 163
Artículo
· 31 ago, 2021 Lectura de 2 min
FOREACH para ObjectScript

Como sabes, ObjectScript no tiene un comando o función de sistema FOREACH.
Pero tiene un amplio margen para la creatividad.

Pero la tarea es recorrer una matriz global o local y hacer algo PARA CADA elemento.

Hay dos posibles soluciones:

  • Crear una macro que genere las secuencias de código requeridas
  • Crear un comando extendido para realizar la acción.

0 0
0 111

Ya están disponibles nuevas versiones de mantenimiento de:

  • Caché 2018.1.6, Ensemble 2018.1.6 y HSAP 2018.1.6
  • InterSystems IRIS 2020.1.2, IRIS for Health 2020.1.2 y HealthShare Health Connect 2020.1.2
  • InterSystems IRIS 2021.1.1, IRIS for Health 2021.1.1 y HealthShare Health Connect 2021.1.1

Los kits para la instalación y los contenedores se pueden descargar de la página de distribución de software del Centro de Soporte Internacional (WRC). Las imágenes de los contenedores para las Enterprise Editions de InterSystems IRIS e IRIS for Health y todos los componentes correspondientes están disponibles en el Registro de Contenedores de InterSystems.

0 0
0 123

InterSystems anuncia la Versión de Mantenimiento (Maintenance Release, MR) 2018.1.8 de Caché, Ensemble y HSAP. Es una versión de mantenimiento con muchas actualizaciones en una gran variedad de áreas.

Caché y Ensemble

Los kits completos de instalación de producto se pueden descargar de la página de distribución de software del Centro de Soporte Internacional (WRC):

0 0
0 89

Necesitaba averiguar en tiempo de ejecución si el último test había fallado o no.

Después de investigar un poco, aquí está el código:

ClassMethod isLastTestOk() As %Boolean
{
  set in = ##class(%UnitTest.Result.TestInstance).%OpenId(^UnitTest.Result)
  for i=1:1:in.TestSuites.Count() {
    #dim suite As %UnitTest.Result.TestSuite
    set suite = in.TestSuites.GetAt(i)
    return:suite.Status=0 $$$NO
  }
  quit $$$YES
}

0 0
0 27

++ Update: August 1, 2018

El uso de la dirección IP virtual (VIP) de InterSystems incorporada en Mirroring de la base de datos de Caché tiene ciertas limitaciones. En particular, solo puede utilizarse cuando los miembros Mirror se encuentran en la misma subred. Cuando se utilizan varios centros de datos, las subredes normalmente no se “extienden” más allá del centro de datos físico debido a la complejidad añadida de la red (puede obtener más información aquí). Por las mismas razones, la IP virtual con frecuencia no puede utilizarse cuando la base de datos se aloja en la nube.

0 0
0 375

Introducción

Un requisito frecuente en muchas aplicaciones es registrar en una base de datos los cambios que se realizan en los datos- qué datos se modificaron, quién los modificó y cuándo (control de cambios). Hay muchos artículos relacionados con el tema y existen diferentes métodos sobre cómo hacer esto en Caché.

0 1
0 265
Artículo
· 23 sep, 2021 Lectura de 1 min
Almacenamiento global: Todo lo que querías saber y más.

En el núcleo de IRIS y Caché hay una arquitectura de base de datos muy interesante a la que, en M/Gateway Developments, nos referimos como "Almacenamiento Global". Si alguna vez quisiste saber más sobre los fundamentos y las funciones de esta base de datos oculta, te interesará leer un completo análisis que hemos elaborado:

https://github.com/robtweed/global_storage

Entre otras cosas, descubrirás que:

0 0
0 111

19 de Noviembre de 2021

Los kits de InterSystems incluyen un servidor web Apache que ofrece una práctica manera de interactuar con el Portal de Gestión de Caché/IRIS sin necesidad de instalar un servidor web externo. Sin embargo, este servidor web nunca debería usarse para instancias de producción y se debe instalar un servidor web externo que se ajuste a las necesidades específicas y a los requisitos de seguridad y riesgo de cada cliente.

Pruebas recientes han detectado problemas de seguridad con el servidor web Apache incluido en los kits actuales. Como es una tecnología de terceros que InterSystems no controla, InterSystems recomienda instalar la versión del servidor web obtenida directamente desde Apache y deshabilitar el servidor web Apache incluido. Nuestra documentación incluye instrucciones sobre cómo deshabilitar el servidor web proporcionado con nuestros kits. Apache también ofrece instrucciones de desinstalación, que se pueden encontrar en su página web.

0 0
0 125

¡Hola desarrolladores!

Solo quiero compartir con vosotros mi conocimiento, es decir, experiencia en algo que os puede hacer ahorrar unas cuantas horas algún día.

Si estás creando una REST API con IRIS que contiene más de un nivel de "/", por ejemplo: '/patients/all', no te olvides de añadir el parámetro 'recurse=1' en tu script de despliegue en %Installer. Si no, todas las entradas de nivel secundario y de mayor profundidad no funcionarán. Y todas las entradas de nivel primario funcionarán.

/patients

- funcionará, pero

/patients/all

- no funcionará.

Este es un ejemplo de sección CSPApplication que arregla el problema y que puede que quieras usar en tu clase %Installer:

    <CSPApplication Url="${CSPAPP}"
      Recurse="1"
      Directory="${CSPAPPDIR}"
      Grant="${RESOURCE},%SQL"
      AuthenticationMethods="96"
      />

0 0
0 118

¿Habéis oído hablar del Design Thinking? ¿O habéis oído hablar de ello y pensado: "Yo no soy diseñador, ¿cuándo usaría yo el Design Thinking?" Si bien un diseñador dedicado es responsable de aplicar las prácticas de Design Thinking en una organización, cualquier persona que cree productos puede beneficiarse de una mentalidad Design Thinking. Según Forbes, las prácticas de Design Thinking pueden "proporcionar un ROI del 85% o más". También puede reducir los ciclos de desarrollo de productos en un 33-50%.

person writing on white paper

0 0
0 59