Build and package ogagent py3/qt6 for windows and linux #2

Merged
nserrano merged 9 commits from py3-win into main 2024-07-23 09:58:23 +02:00
Collaborator

Para probar el agente de windows necesitamos un cliente de windows, pero en el ESXi todavía no tenemos automatizada la creación de clientes windows. Lo que he hecho fue usar https://github.com/dockur/windows, que crea un contenedor de docker con qemu (usando la imagen de dockerhub dockurr/windows) e instala windows dentro de manera automatizada.

Hacen falta:

  • linux y docker para levantar el windows virtual
  • perl con datetime y mojolicious para emular un servidor de opengnsys (que se usa muy poquito)
  • curl para enviarle cosas al agente.

paso 1: instalar windows

Crear un yml para docker-compose, por ejemplo:

$ cat natiwin11pro-devel.yml
services:
  windows:
    image: dockurr/windows
    container_name: windows-devel
    environment:
      VERSION: "win11"
      REGION: "es-ES"
      KEYBOARD: "es-ES"
      DISK_SIZE: "20G"
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    ports:
      - "8000:8000"   ## ogagent
      - "8006:8006"
      - "3389:3389/tcp"
      - "3389:3389/udp"
    stop_grace_period: 2m
    volumes:
      - /home/nati/Downloads/isos-images/ms/Win11_23H2_EnglishInternational_x64v2.iso:/custom.iso
      - /home/nati/Downloads/work/opengnsys/dockur-windows/windows-devel:/storage
      - /home/nati/Downloads/work/opengnsys/ogagent:/shared

En el primer volumen (/custom.iso) usé una iso que tengo por aquí. Se puede omitir, y dockurr/windows se la baja de internet.

El segundo volumen (/storage) hace falta para almacenar el disco duro virtual de qemu y otras cosas. El directorio local puede ser cualquier directorio.

El tercero (/shared) es una unidad de red que será visible en windows bajo \\host.lan\Data. El directorio local debe ser el del repositorio de ogagent.

Levantar el docker: $ docker-compose --file natiwin11pro-devel.yml up -d

Conectarse con un navegador al VNC: http://localhost:8006/?resize=scale&autoconnect=true

paso 2: instalar python y demás

Abrir una ventana de powershell y ejecutar:

> net use f: \\host.lan\Data
> F:\windows\setup.bat

La instalación de NSIS es interactiva. No sé cómo evitarlo. Esto no bloquea la PR (basta con darle siguiente siguiente finalizar) pero sí bloquea el futuro CI.

paso 3: prepararativos

En powershell ejecutar:

> f:
> python src/update.py
> move c:\users\docker\downloads\VC_redist.x64.exe F:\windows\

Esto pone la versión del agente en varios archivos, y prepara algunas cosas del UI de QT. Además movemos el VC_redist a un sitio donde el NSIS lo va a buscar.

En powershell, desactivar antivirus y firewall. El primero hace falta porque cuando pyinstaller crea el exe, lo detecta como virus (lo hace desde que le puse icon=['img\\oga.ico'] en el spec). El segundo hace falta para las pruebas. Esta es la máquina de desarrollo, así que no pasa nada por desactivar estas cosas.

> Set-MpPreference -DisableRealtimeMonitoring $true
> Set-NetFirewallProfile -All -Enabled False

paso 4: compilar y empaquetar

> cd \src
> pyinstaller OGAgent.spec
> cd ..
> copy windows\ogagent.nsi .
> "C:\Program Files (x86)\NSIS\makensis.exe" ogagent.nsi
> del ogagent.nsi

Hay que copiar el .nsi para ejecutar makensis desde un directorio en particular. Evitarlo implica un diff de cierto tamaño que no creo que merezca la pena.

Tras la ejecución de makensis aparece un OGAgentSetup-1.3.1.exe en el directorio actual.

Apagar windows.

paso 5: emular servidor de og

$ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.1.249:443")'

(usar la IP local correcta, obviamente). Este es un mini servidor HTTPS que acepta peticiones a /cualquier/cosa y responde con un objeto json vacío ({}). También hace log por stdout de cada petición recibida. El agente envía cosas al servidor de og e ignora la respuesta, por lo que un json vacío nos sirve. Dejar este servidor ejecutándose en segundo plano.

paso 6: ir a un windows nuevo e instalar el agente

Usar un yml ligeramente diferente (natiwin11pro.yml), donde solo cambian el container_name ("windows") y el volumen de /storage (/home/nati/Downloads/work/opengnsys/dockur-windows/windows)

En linux: docker-compose --file natiwin11pro.yml up -d.

Ejecutar:

> net use f: \\host.lan\Data
> copy f:\OGAgentSetup-1.3.1.exe .
> OGAgentSetup-1.3.1.exe

Durante la instalación hay que poner la IP donde está el servidor de og, que debe coincidir con la que hemos puesto en mojolicious.

La instalación del agente levanta el OGAgentService y éste realiza una petición POST al servidor de OG (a /opengnsys/rest/ogagent/started). La instalación también ejecuta el OGAgentUser, que hace otro POST al servidor (a /opengnsys/rest/ogagent/loggedin).

Podemos ver logs del OGAgentService y OGAgentUser respectivamente:

> cat c:\windows\temp\opengnsys.log -Tail 25
> cat c:\users\docker\appdata\local\temp\opengnsys.log -Tail 25

paso 7: comprobar que aparece el icono al lado de la hora

Con los últimos commits, esto quedó resuelto.

paso 8: reiniciar windows

Al reiniciar windows, tanto OGAgentService como OGAgentUser deberían levantarse solos, y deberían aparecer otra vez los siguientes POST en el servidor:

  • /opengnsys/rest/ogagent/loggedout
  • /opengnsys/rest/ogagent/stopped
  • /opengnsys/rest/ogagent/started
  • /opengnsys/rest/ogagent/loggedin

paso 9: consultar status al agente

$ curl --insecure https://localhost:8000/opengnsys/status
{"status": "WIN", "loggedin": true, "session": "console"}

paso 10: limpieza

  • apagar windows
  • parar el perl
  • borrar los directorios locales usados para /storage en ambos contenedores
  • borrar los yml de docker-compose
  • borrar src/dist y src/build, creados por pyinstaller, y contienen archivos cuyo dueño es root:root
  • borrar caches de python sudo rm -vf **/__pycache__/* (si no funciona, hay que hacer shopt -s globstar)
  • borrar readme.txt (lo crea el dockurr)
Para probar el agente de windows necesitamos un cliente de windows, pero en el ESXi todavía no tenemos automatizada la creación de clientes windows. Lo que he hecho fue usar https://github.com/dockur/windows, que crea un contenedor de docker con qemu (usando la imagen de dockerhub `dockurr/windows`) e instala windows dentro de manera automatizada. Hacen falta: - linux y docker para levantar el windows virtual - perl con datetime y mojolicious para emular un servidor de opengnsys (que se usa muy poquito) - curl para enviarle cosas al agente. ## paso 1: instalar windows Crear un yml para docker-compose, por ejemplo: ``` $ cat natiwin11pro-devel.yml services: windows: image: dockurr/windows container_name: windows-devel environment: VERSION: "win11" REGION: "es-ES" KEYBOARD: "es-ES" DISK_SIZE: "20G" devices: - /dev/kvm cap_add: - NET_ADMIN ports: - "8000:8000" ## ogagent - "8006:8006" - "3389:3389/tcp" - "3389:3389/udp" stop_grace_period: 2m volumes: - /home/nati/Downloads/isos-images/ms/Win11_23H2_EnglishInternational_x64v2.iso:/custom.iso - /home/nati/Downloads/work/opengnsys/dockur-windows/windows-devel:/storage - /home/nati/Downloads/work/opengnsys/ogagent:/shared ``` En el primer volumen (/custom.iso) usé una iso que tengo por aquí. Se puede omitir, y dockurr/windows se la baja de internet. El segundo volumen (/storage) hace falta para almacenar el disco duro virtual de qemu y otras cosas. El directorio local puede ser cualquier directorio. El tercero (/shared) es una unidad de red que será visible en windows bajo `\\host.lan\Data`. El directorio local debe ser el del repositorio de ogagent. Levantar el docker: `$ docker-compose --file natiwin11pro-devel.yml up -d` Conectarse con un navegador al VNC: http://localhost:8006/?resize=scale&autoconnect=true ## paso 2: instalar python y demás Abrir una ventana de powershell y ejecutar: ``` > net use f: \\host.lan\Data > F:\windows\setup.bat ``` La instalación de NSIS es interactiva. No sé cómo evitarlo. Esto no bloquea la PR (basta con darle siguiente siguiente finalizar) pero sí bloquea el futuro CI. ## paso 3: prepararativos En powershell ejecutar: ``` > f: > python src/update.py > move c:\users\docker\downloads\VC_redist.x64.exe F:\windows\ ``` Esto pone la versión del agente en varios archivos, y prepara algunas cosas del UI de QT. Además movemos el VC_redist a un sitio donde el NSIS lo va a buscar. En powershell, desactivar antivirus y firewall. El primero hace falta porque cuando pyinstaller crea el exe, lo detecta como virus (lo hace desde que le puse `icon=['img\\oga.ico']` en el spec). El segundo hace falta para las pruebas. Esta es la máquina de desarrollo, así que no pasa nada por desactivar estas cosas. ``` > Set-MpPreference -DisableRealtimeMonitoring $true > Set-NetFirewallProfile -All -Enabled False ``` ## paso 4: compilar y empaquetar ``` > cd \src > pyinstaller OGAgent.spec > cd .. > copy windows\ogagent.nsi . > "C:\Program Files (x86)\NSIS\makensis.exe" ogagent.nsi > del ogagent.nsi ``` Hay que copiar el .nsi para ejecutar makensis desde un directorio en particular. Evitarlo implica un diff de cierto tamaño que no creo que merezca la pena. Tras la ejecución de makensis aparece un `OGAgentSetup-1.3.1.exe` en el directorio actual. Apagar windows. ## paso 5: emular servidor de og ``` $ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.1.249:443")' ``` (usar la IP local correcta, obviamente). Este es un mini servidor HTTPS que acepta peticiones a `/cualquier/cosa` y responde con un objeto json vacío (`{}`). También hace log por stdout de cada petición recibida. El agente envía cosas al servidor de og e ignora la respuesta, por lo que un json vacío nos sirve. Dejar este servidor ejecutándose en segundo plano. ## paso 6: ir a un windows nuevo e instalar el agente Usar un yml ligeramente diferente (`natiwin11pro.yml`), donde solo cambian el container_name ("windows") y el volumen de /storage (`/home/nati/Downloads/work/opengnsys/dockur-windows/windows`) En linux: `docker-compose --file natiwin11pro.yml up -d`. Ejecutar: ``` > net use f: \\host.lan\Data > copy f:\OGAgentSetup-1.3.1.exe . > OGAgentSetup-1.3.1.exe ``` Durante la instalación hay que poner la IP donde está el servidor de og, que debe coincidir con la que hemos puesto en mojolicious. La instalación del agente levanta el OGAgentService y éste realiza una petición POST al servidor de OG (a `/opengnsys/rest/ogagent/started`). La instalación también ejecuta el OGAgentUser, que hace otro POST al servidor (a `/opengnsys/rest/ogagent/loggedin`). Podemos ver logs del OGAgentService y OGAgentUser respectivamente: ``` > cat c:\windows\temp\opengnsys.log -Tail 25 > cat c:\users\docker\appdata\local\temp\opengnsys.log -Tail 25 ``` ## paso 7: comprobar que aparece el icono al lado de la hora Con los últimos commits, esto quedó resuelto. ## paso 8: reiniciar windows Al reiniciar windows, tanto OGAgentService como OGAgentUser deberían levantarse solos, y deberían aparecer otra vez los siguientes POST en el servidor: - /opengnsys/rest/ogagent/loggedout - /opengnsys/rest/ogagent/stopped - /opengnsys/rest/ogagent/started - /opengnsys/rest/ogagent/loggedin ## paso 9: consultar status al agente ``` $ curl --insecure https://localhost:8000/opengnsys/status {"status": "WIN", "loggedin": true, "session": "console"} ``` ## paso 10: limpieza - apagar windows - parar el perl - borrar los directorios locales usados para /storage en ambos contenedores - borrar los yml de docker-compose - borrar src/dist y src/build, creados por pyinstaller, y contienen archivos cuyo dueño es root:root - borrar caches de python `sudo rm -vf **/__pycache__/*` (si no funciona, hay que hacer `shopt -s globstar`) - borrar readme.txt (lo crea el dockurr)
nserrano added 1 commit 2024-06-26 12:24:30 +02:00
nserrano added 1 commit 2024-06-28 16:05:19 +02:00
10fab7839e refs #464 several fixes and improvements
- fix OG icon in windows system tray
- change a log.info into log.debug to avoid a crash (!)
- migrate update.sh to python so it can be run from windows/macos too
  - manage windows/VERSION in this script too
  - remove call to pyrcc--it's not required!
- remove stray windows scripts
- add a forgotten setup.bat
nserrano requested review from lgromero 2024-06-28 16:05:53 +02:00
nserrano requested review from vtroshchinskiy 2024-06-28 16:05:53 +02:00
nserrano requested review from aguerrero 2024-06-28 16:05:53 +02:00
nserrano requested review from arantuna 2024-06-28 16:05:53 +02:00
Collaborator

Observaciones:

Sobre el tema de levantar el docker de windows todo bien

paso 2: instalar python y demás

F:\windows\setup\setup.bat

La ruta que existe en el repo solo es \windows\setup.bat (es el que ejecuté y si instala varios componentes)

paso 3: prepararativos

En powershell ejecutar:

python src/update.sh

en src solo existe update.py, traté de ejecutarlo de varias formas pero no funciona, de entrada no existe python instalado en windows, no se si es de los paquetes que debieron quedar instalados en el paso 2. De cualquier forma, para validar, instalé directamente de la Tienda ambos aplicativos

python src/update.sh
python src/update.py
python3 src/update.sh

despues de eso ya no logré avanzar

### Observaciones: Sobre el tema de levantar el docker de windows todo bien ### paso 2: instalar python y demás > F:\windows\setup\setup.bat La ruta que existe en el repo solo es \windows\setup.bat (es el que ejecuté y si instala varios componentes) ### paso 3: prepararativos En powershell ejecutar: > python src/update.sh en src solo existe update.py, traté de ejecutarlo de varias formas pero no funciona, de entrada no existe python instalado en windows, no se si es de los paquetes que debieron quedar instalados en el paso 2. De cualquier forma, para validar, instalé directamente de la Tienda ambos aplicativos python src/update.sh python src/update.py python3 src/update.sh despues de eso ya no logré avanzar
aguerrero closed this pull request 2024-07-01 05:45:29 +02:00
nserrano reopened this pull request 2024-07-01 10:00:01 +02:00
Poster
Collaborator

Tienes razón, es f:\windows\setup.bat, y también es src/python.py. He estado moviendo archivos hasta el último momento. Acabo de editar.

¿Cómo que no tienes python en el sistema? En la salida del setup.bat ¿salió algún error?

Tienes razón, es f:\windows\setup.bat, y también es src/python.py. He estado moviendo archivos hasta el último momento. Acabo de editar. ¿Cómo que no tienes python en el sistema? En la salida del setup.bat ¿salió algún error?
nserrano added 1 commit 2024-07-01 12:17:53 +02:00
833a0dc412 refs #468 remove some whitespace
This is a pretty much dumb commit just to make a ref to the ticket #468,
because the changes proposed to fix #464 also work on linux.
nserrano changed title from Build and package ogagent py3/qt6 for windows to Build and package ogagent py3/qt6 for windows and linux 2024-07-01 12:19:59 +02:00
Poster
Collaborator

Sin hacer cambios adicionales al repo, la solución del icono también funciona en linux.

Para probarla en el ESXi hay que lanzar un entorno nuevo desde main e instalar el agente en un cliente con linux. Yo me he limitado a probarlo en local:

paso 1: crear deb

$ src/update.py
$ linux/build-packages.sh

paso 2: desplegar VM

Yo usé virtualbox con una debian bookworm.

paso 3: instalar ogagent en la VM

Primero lanzamos el mismo emulador de ogserver que para windows:

$ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.1.249:443")'

Subimos el agente a la VM (por ejemplo scp ogagent_1.3.1-1_all.deb nati@192.168.1.43:) y por último en la VM lo instalamos (por ejemplo apt-get install /home/nati/ogagent_1.3.1-1_all.deb).

paso 4: probar

En la VM como root:

# cd /usr/share/OGAgent
# PYTHONPATH=. python3 opengnsys/linux/OGAgentService.py start
# tail /var/log/opengnsys.log

En la VM en otra ventana, como usuario:

$ cd /usr/share/OGAgent
$ ./OGAgentUser.py &        ## aquí debe aparecer el icono en el system tray
$ tail ~/opengnsys.log

Reiniciar linux. El proceso de Service debería ejecutarse automáticamente al reiniciar. Y al iniciar sesión, el proceso de User también debería ejecutarse automáticamente. Y el icono también debería estar.

Sin hacer cambios adicionales al repo, la solución del icono también funciona en linux. Para probarla en el ESXi hay que lanzar un entorno nuevo desde main e instalar el agente en un cliente con linux. Yo me he limitado a probarlo en local: ## paso 1: crear deb ``` $ src/update.py $ linux/build-packages.sh ``` ## paso 2: desplegar VM Yo usé virtualbox con una debian bookworm. ## paso 3: instalar ogagent en la VM Primero lanzamos el mismo emulador de ogserver que para windows: ``` $ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.1.249:443")' ``` Subimos el agente a la VM (por ejemplo `scp ogagent_1.3.1-1_all.deb nati@192.168.1.43:`) y por último en la VM lo instalamos (por ejemplo `apt-get install /home/nati/ogagent_1.3.1-1_all.deb`). ## paso 4: probar En la VM como root: ``` # cd /usr/share/OGAgent # PYTHONPATH=. python3 opengnsys/linux/OGAgentService.py start # tail /var/log/opengnsys.log ``` En la VM en otra ventana, como usuario: ``` $ cd /usr/share/OGAgent $ ./OGAgentUser.py & ## aquí debe aparecer el icono en el system tray $ tail ~/opengnsys.log ``` Reiniciar linux. El proceso de Service debería ejecutarse automáticamente al reiniciar. Y al iniciar sesión, el proceso de User también debería ejecutarse automáticamente. Y el icono también debería estar.
Collaborator

al ejecutar setup.bat aparece un error:

Image 1

Después continua la instalación, aparentemente sin problemas. Una vez que termina y se ejecuta el siguiente paso pero indica que python no se reconoce

Image 2

Para probar si se resolvia el problema se instaló python desde la Store

Image 3

pero envía otro error:

Image 4

al ejecutar setup.bat aparece un error: [Image 1](![Err_install.png](/attachments/8d2279b1-e4b8-42e0-8f42-a12c6c9202d2)) Después continua la instalación, aparentemente sin problemas. Una vez que termina y se ejecuta el siguiente paso pero indica que python no se reconoce [Image 2](![err_python.png](/attachments/52ac9dcb-d0f0-4bcc-b996-506aeeef38f1)) Para probar si se resolvia el problema se instaló python desde la Store [Image 3](![install_python.png](/attachments/f464188e-1ce8-4a42-8ff5-08d2c8d27322)) pero envía otro error: [Image 4](![imagen](/attachments/2d34c0e4-3852-4183-a9f3-c6121ff648ed))
Poster
Collaborator

En Err_install.png arriba de todo pone "curl: Failed to connect", es decir, que las descargas fallaron. Vuelve a ejecutarlo, o descarga las cosas a mano, o lo que sea.

En Err_install.png arriba de todo pone "curl: Failed to connect", es decir, que las descargas fallaron. Vuelve a ejecutarlo, o descarga las cosas a mano, o lo que sea.
Collaborator

Tenia esto en los logs

sudo docker logs windows-devel
❯ Starting Windows for Docker v3.12...
❯ For support visit https://github.com/dockur/windows
❯ CPU: Intel Core TM i5 8250U CPU | RAM: 2/8 GB | DISK: 68 GB (ext4) | HOST: 6.5.0-41...

❯ ERROR: Your configured RAM_SIZE of 4 GB is too high for the 2 GB of memory available, please set a lower value.

Solución: añadirle 1G de tamaño de RAM

    environment:
      VERSION: "win11"
      REGION: "es-ES"
      KEYBOARD: "es-ES"
      DISK_SIZE: "20G"
      RAM_SIZE: "1G"

En el paso 4 este comando

"C:\Program Files (x86)\NSIS\makensis.exe" ogagent.nsi

Hay que ejecutarlo en cmd, en Powershell ni con doble comillas ni comillas simples ni sin comillas funcionaba

It works!

sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.0.27:443")'                                                                                                                               
Web application available at https://192.168.0.27:443
20240710 185346+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "secret": "ros5ttx7nz14i6w0bnk8o78jdolhof5a", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"}
20240710 185350+0000 172.18.0.2 opengnsys/rest/ogagent/loggedin {"ip": "20.20.20.21", "user": "Docker", "language": "es_ES", "session": "console", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"}

Tambien aparece el icono de ogagen que te deja clickar a un "about"

Y al apagar aparece las otras peticiones

luis@luis-Inspiron-5570:~$ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.0.27:443")'                                                                                                                               
Web application available at https://192.168.0.27:443
20240710 185346+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "secret": "ros5ttx7nz14i6w0bnk8o78jdolhof5a", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"}
20240710 185350+0000 172.18.0.2 opengnsys/rest/ogagent/loggedin {"ip": "20.20.20.21", "user": "Docker", "language": "es_ES", "session": "console", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"}
20240710 185829+0000 172.18.0.2 opengnsys/rest/ogagent/stopped {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"}
20240710 185847+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "secret": "tg0em81tgobvoeoxytmadyz4bhbiq03v", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"}
20240710 185935+0000 172.18.0.2 opengnsys/rest/ogagent/loggedin {"ip": "20.20.20.21", "user": "Docker", "language": "es_ES", "session": "console", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"}

Y por ultimo

curl --insecure https://localhost:8000/opengnsys/status
{"status": "WIN", "loggedin": true, "session": "console"}luis@luis-Inspiron-5570:~

Tenia esto en los logs ``` sudo docker logs windows-devel ❯ Starting Windows for Docker v3.12... ❯ For support visit https://github.com/dockur/windows ❯ CPU: Intel Core TM i5 8250U CPU | RAM: 2/8 GB | DISK: 68 GB (ext4) | HOST: 6.5.0-41... ❯ ERROR: Your configured RAM_SIZE of 4 GB is too high for the 2 GB of memory available, please set a lower value. ``` Solución: añadirle 1G de tamaño de RAM ``` environment: VERSION: "win11" REGION: "es-ES" KEYBOARD: "es-ES" DISK_SIZE: "20G" RAM_SIZE: "1G" ``` En el paso 4 este comando ``` "C:\Program Files (x86)\NSIS\makensis.exe" ogagent.nsi ``` Hay que ejecutarlo en cmd, en Powershell ni con doble comillas ni comillas simples ni sin comillas funcionaba It works! ``` sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.0.27:443")' Web application available at https://192.168.0.27:443 20240710 185346+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "secret": "ros5ttx7nz14i6w0bnk8o78jdolhof5a", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"} 20240710 185350+0000 172.18.0.2 opengnsys/rest/ogagent/loggedin {"ip": "20.20.20.21", "user": "Docker", "language": "es_ES", "session": "console", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"} ``` Tambien aparece el icono de ogagen que te deja clickar a un "about" Y al apagar aparece las otras peticiones ``` luis@luis-Inspiron-5570:~$ sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.0.27:443")' Web application available at https://192.168.0.27:443 20240710 185346+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "secret": "ros5ttx7nz14i6w0bnk8o78jdolhof5a", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"} 20240710 185350+0000 172.18.0.2 opengnsys/rest/ogagent/loggedin {"ip": "20.20.20.21", "user": "Docker", "language": "es_ES", "session": "console", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"} 20240710 185829+0000 172.18.0.2 opengnsys/rest/ogagent/stopped {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"} 20240710 185847+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:0E:B4:EE:50:31", "ip": "20.20.20.21", "secret": "tg0em81tgobvoeoxytmadyz4bhbiq03v", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"} 20240710 185935+0000 172.18.0.2 opengnsys/rest/ogagent/loggedin {"ip": "20.20.20.21", "user": "Docker", "language": "es_ES", "session": "console", "ostype": "Windows", "osversion": "Windows 10 Pro 2009"} ``` Y por ultimo curl --insecure https://localhost:8000/opengnsys/status {"status": "WIN", "loggedin": true, "session": "console"}luis@luis-Inspiron-5570:~
Collaborator

He probado a desinstalar el NSIS e instalarlo en modo silencioso de la siguiente forma:

cd Downloads
curl https://prdownloads.sourceforge.net/nsis/nsis-3.05-setup.exe?download    --location --output nsis-install.exe
nsis-installer.exe /S

No te aparece ninguna ventana de instalación ni el "siguiente siguiente finalizar".

Aparece al finalizar la carpeta NSIS en C://Program files (x86)/NSIS

He probado a desinstalar el NSIS e instalarlo en modo silencioso de la siguiente forma: ``` cd Downloads curl https://prdownloads.sourceforge.net/nsis/nsis-3.05-setup.exe?download --location --output nsis-install.exe nsis-installer.exe /S ``` No te aparece ninguna ventana de instalación ni el "siguiente siguiente finalizar". Aparece al finalizar la carpeta NSIS en C://Program files (x86)/NSIS
Poster
Collaborator

Para ejecutar makensis en powershell:

  • teclear C:\Pro
  • pulsar tab, la línea de comandos se transforma en & 'C:\Program Files\'
  • pulsar tab otra vez, la línea de comandos se transforma en & 'C:\Program Files (x86)\'
  • teclear ns
  • pulsar tab, la línea de comandos se transforma en & 'C:\Program Files (x86)\NSIS\'
  • teclear ma
  • pulsar tab, la línea de comandos se transforma en & 'C:\Program Files (x86)\NSIS\makensis.exe'
  • teclear og (ojo al espacio)
  • pusar tab, la línea de comandos se transforma en & 'C:\Program Files (x86)\NSIS\makensis.exe' .\ogagent.nsi
  • pulsar enter

Y funciona.

Para ejecutar makensis en powershell: - teclear `C:\Pro` - pulsar tab, la línea de comandos se transforma en `& 'C:\Program Files\'` - pulsar tab otra vez, la línea de comandos se transforma en `& 'C:\Program Files (x86)\'` - teclear `ns` - pulsar tab, la línea de comandos se transforma en `& 'C:\Program Files (x86)\NSIS\'` - teclear `ma` - pulsar tab, la línea de comandos se transforma en `& 'C:\Program Files (x86)\NSIS\makensis.exe'` - teclear ` og` (ojo al espacio) - pusar tab, la línea de comandos se transforma en `& 'C:\Program Files (x86)\NSIS\makensis.exe' .\ogagent.nsi` - pulsar enter Y funciona.
Poster
Collaborator

Y la captura de pantalla, creo que no querías subir esa ;)

Y la captura de pantalla, creo que no querías subir esa ;)
Collaborator

Y la captura de pantalla, creo que no querías subir esa ;)

ups vaya fallo. Era esta

> Y la captura de pantalla, creo que no querías subir esa ;) ups vaya fallo. Era esta
nserrano added 1 commit 2024-07-11 11:14:02 +02:00
Poster
Collaborator

La revisión de linux está en este mismo PR en otro comentario: #2 (comment)

Si le puedes echar un ojo, mergeo.

La revisión de linux está en este mismo PR en otro comentario: https://ognproject.evlt.uma.es/gitea/opengnsys/ogagent/pulls/2#issuecomment-479 Si le puedes echar un ojo, mergeo.
nserrano added 5 commits 2024-07-22 15:36:16 +02:00
Collaborator

He revisado la versión de linux en Ubuntu 24.04 y aunque da un problema de dependencias al instalar, solventadas, se muestra el icono perfectamente.
arantuna@ubuntu2404:~$ sudo dpkg -i ogagent_1.3.1-1_all.deb [sudo] contraseña para arantuna: Seleccionando el paquete ogagent previamente no seleccionado. (Leyendo la base de datos ... 151142 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.1-1_all.deb ... Desempaquetando ogagent (1.3.1-1) ... dpkg: problemas de dependencias impiden la configuración de ogagent: ogagent depende de python3-pyqt6; sin embargo: El paquete python3-pyqt6' no está instalado.
ogagent depende de python3-prctl; sin embargo:
El paquete `python3-prctl' no está instalado.

dpkg: error al procesar el paquete ogagent (--install):
problemas de dependencias - se deja sin configurar
Procesando disparadores para gnome-menus (3.36.0-1.1ubuntu3) ...
Procesando disparadores para desktop-file-utils (0.27-2build1) ...
Se encontraron errores al procesar:
ogagent
arantuna@ubuntu2404:~$ sudo apt install python3-pyqt6
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Tal vez quiera ejecutar «apt --fix-broken install» para corregirlo.
Los siguientes paquetes tienen dependencias incumplidas:
ogagent : Depende: python3-prctl pero no va a instalarse
python3-pyqt6 : Depende: python3-pyqt6.sip (< 14) pero no va a instalarse
Depende: python3-pyqt6.sip (>= 13.6) pero no va a instalarse
Depende: libqt6core6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6dbus6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6gui6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6network6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6opengl6t64 (>= 6.3.0) pero no va a instalarse
Depende: libqt6openglwidgets6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: libqt6printsupport6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: libqt6sql6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: libqt6test6t64 (>= 6.4.1) pero no va a instalarse
Depende: libqt6widgets6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6xml6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: qt6-base-abi (= 6.4.2)
E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución).
arantuna@ubuntu2404:~$ sudo apt --fix-broken
E: No tiene sentido la opción de línea de órdenes --fix-broken combinada con las otras opciones
arantuna@ubuntu2404:~$ sudo apt install --fix-broken
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Se instalarán los siguientes paquetes adicionales:
libb2-1 libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt6core6t64 libqt6dbus6t64 libqt6gui6t64
libqt6network6t64 libqt6opengl6t64 libqt6openglwidgets6t64 libqt6printsupport6t64 libqt6qml6
libqt6qmlmodels6 libqt6quick6 libqt6sql6-sqlite libqt6sql6t64 libqt6test6t64 libqt6waylandclient6
libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6 libqt6waylandeglcompositorhwintegration6
libqt6widgets6t64 libqt6wlshellintegration6 libqt6xml6t64 libts0t64 python3-prctl python3-pyqt6
python3-pyqt6.sip qt6-gtk-platformtheme qt6-qpa-plugins qt6-translations-l10n qt6-wayland
Paquetes sugeridos:
qt6-qmltooling-plugins
Se instalarán los siguientes paquetes NUEVOS:
libb2-1 libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt6core6t64 libqt6dbus6t64 libqt6gui6t64
libqt6network6t64 libqt6opengl6t64 libqt6openglwidgets6t64 libqt6printsupport6t64 libqt6qml6
libqt6qmlmodels6 libqt6quick6 libqt6sql6-sqlite libqt6sql6t64 libqt6test6t64 libqt6waylandclient6
libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6 libqt6waylandeglcompositorhwintegration6
libqt6widgets6t64 libqt6wlshellintegration6 libqt6xml6t64 libts0t64 python3-prctl python3-pyqt6
python3-pyqt6.sip qt6-gtk-platformtheme qt6-qpa-plugins qt6-translations-l10n qt6-wayland
0 actualizados, 32 nuevos se instalarán, 0 para eliminar y 78 no actualizados.
1 no instalados del todo o eliminados.
Se necesita descargar 19,6 MB de archivos.
Se utilizarán 83,0 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]
...
...
arantuna@ubuntu2404:~$ sudo dpkg -i ogagent_1.3.1-1_all.deb
(Leyendo la base de datos ... 151811 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar ogagent_1.3.1-1_all.deb ...
Desempaquetando ogagent (1.3.1-1) sobre (1.3.1-1) ...
Configurando ogagent (1.3.1-1) ...
Procesando disparadores para gnome-menus (3.36.0-1.1ubuntu3) ...
Procesando disparadores para desktop-file-utils (0.27-2build1) ...
`

Ocurre como en el resto, hay que revisar el "about" para actualizar la versión y el texto, pero funciona ok.

Un saludo,

He revisado la versión de linux en Ubuntu 24.04 y aunque da un problema de dependencias al instalar, solventadas, se muestra el icono perfectamente. `arantuna@ubuntu2404:~$ sudo dpkg -i ogagent_1.3.1-1_all.deb [sudo] contraseña para arantuna: Seleccionando el paquete ogagent previamente no seleccionado. (Leyendo la base de datos ... 151142 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.1-1_all.deb ... Desempaquetando ogagent (1.3.1-1) ... dpkg: problemas de dependencias impiden la configuración de ogagent: ogagent depende de python3-pyqt6; sin embargo: El paquete `python3-pyqt6' no está instalado. ogagent depende de python3-prctl; sin embargo: El paquete `python3-prctl' no está instalado. dpkg: error al procesar el paquete ogagent (--install): problemas de dependencias - se deja sin configurar Procesando disparadores para gnome-menus (3.36.0-1.1ubuntu3) ... Procesando disparadores para desktop-file-utils (0.27-2build1) ... Se encontraron errores al procesar: ogagent arantuna@ubuntu2404:~$ sudo apt install python3-pyqt6 Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado... Hecho Tal vez quiera ejecutar «apt --fix-broken install» para corregirlo. Los siguientes paquetes tienen dependencias incumplidas: ogagent : Depende: python3-prctl pero no va a instalarse python3-pyqt6 : Depende: python3-pyqt6.sip (< 14) pero no va a instalarse Depende: python3-pyqt6.sip (>= 13.6) pero no va a instalarse Depende: libqt6core6t64 (>= 6.4.0) pero no va a instalarse Depende: libqt6dbus6t64 (>= 6.4.0) pero no va a instalarse Depende: libqt6gui6t64 (>= 6.4.0) pero no va a instalarse Depende: libqt6network6t64 (>= 6.4.0) pero no va a instalarse Depende: libqt6opengl6t64 (>= 6.3.0) pero no va a instalarse Depende: libqt6openglwidgets6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse Depende: libqt6printsupport6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse Depende: libqt6sql6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse Depende: libqt6test6t64 (>= 6.4.1) pero no va a instalarse Depende: libqt6widgets6t64 (>= 6.4.0) pero no va a instalarse Depende: libqt6xml6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse Depende: qt6-base-abi (= 6.4.2) E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución). arantuna@ubuntu2404:~$ sudo apt --fix-broken E: No tiene sentido la opción de línea de órdenes --fix-broken combinada con las otras opciones arantuna@ubuntu2404:~$ sudo apt install --fix-broken Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado... Hecho Corrigiendo dependencias... Listo Se instalarán los siguientes paquetes adicionales: libb2-1 libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt6core6t64 libqt6dbus6t64 libqt6gui6t64 libqt6network6t64 libqt6opengl6t64 libqt6openglwidgets6t64 libqt6printsupport6t64 libqt6qml6 libqt6qmlmodels6 libqt6quick6 libqt6sql6-sqlite libqt6sql6t64 libqt6test6t64 libqt6waylandclient6 libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6 libqt6waylandeglcompositorhwintegration6 libqt6widgets6t64 libqt6wlshellintegration6 libqt6xml6t64 libts0t64 python3-prctl python3-pyqt6 python3-pyqt6.sip qt6-gtk-platformtheme qt6-qpa-plugins qt6-translations-l10n qt6-wayland Paquetes sugeridos: qt6-qmltooling-plugins Se instalarán los siguientes paquetes NUEVOS: libb2-1 libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt6core6t64 libqt6dbus6t64 libqt6gui6t64 libqt6network6t64 libqt6opengl6t64 libqt6openglwidgets6t64 libqt6printsupport6t64 libqt6qml6 libqt6qmlmodels6 libqt6quick6 libqt6sql6-sqlite libqt6sql6t64 libqt6test6t64 libqt6waylandclient6 libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6 libqt6waylandeglcompositorhwintegration6 libqt6widgets6t64 libqt6wlshellintegration6 libqt6xml6t64 libts0t64 python3-prctl python3-pyqt6 python3-pyqt6.sip qt6-gtk-platformtheme qt6-qpa-plugins qt6-translations-l10n qt6-wayland 0 actualizados, 32 nuevos se instalarán, 0 para eliminar y 78 no actualizados. 1 no instalados del todo o eliminados. Se necesita descargar 19,6 MB de archivos. Se utilizarán 83,0 MB de espacio de disco adicional después de esta operación. ¿Desea continuar? [S/n] ... ... arantuna@ubuntu2404:~$ sudo dpkg -i ogagent_1.3.1-1_all.deb (Leyendo la base de datos ... 151811 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.1-1_all.deb ... Desempaquetando ogagent (1.3.1-1) sobre (1.3.1-1) ... Configurando ogagent (1.3.1-1) ... Procesando disparadores para gnome-menus (3.36.0-1.1ubuntu3) ... Procesando disparadores para desktop-file-utils (0.27-2build1) ... ` Ocurre como en el resto, hay que revisar el "about" para actualizar la versión y el texto, pero funciona ok. Un saludo,
Poster
Collaborator

A lo mejor en lugar de sudo dpkg -i ogagent_1.3.1-1_all.deb podías haber hecho sudo apt-get install ./ogagent_1.3.1-1_all.deb. No sé cuándo lo pusieron, pero ahora apt ya también es capaz de instalar paquetes del filesystem local.

Mañana mergeo. Gracias!

A lo mejor en lugar de `sudo dpkg -i ogagent_1.3.1-1_all.deb` podías haber hecho `sudo apt-get install ./ogagent_1.3.1-1_all.deb`. No sé cuándo lo pusieron, pero ahora apt ya también es capaz de instalar paquetes del filesystem local. Mañana mergeo. Gracias!
nserrano merged commit 360d0f8fb8 into main 2024-07-23 09:58:23 +02:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/ogagent#2
There is no content yet.