diff --git a/CHANGELOG.md b/CHANGELOG.md index 34c511e..a489d17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [1.5.4] - 2026-04-24 +### Improved +- Modificado script de post instalación debian para añadir a config.json las nuevas variables. + +## [1.5.3] - 2026-04-24 +### Improved +- Corregidas traducciones + +## [1.5.2] - 2026-04-24 +### Added +- Añadido campo resolución en los ajustes de red de aulas y grupos para propagarlo a los equipos. +- Rediseño del menú de configuracion de una Unidad Organizativa + +## [1.5.1] - 2026-04-23 +### Improved +- Creadas claves de traducción para idiomas, añadido menu para cambiar de idioma en la barra superior + +## [1.5.0] - 2026-04-21 +### Added +- Añadida gestión de múltiples ogBoot Servers +- Si es un ogBoot existente, permite sincronizar su información sobre oglives y plantillas pxe. +- En los Ajustes de red de equipos, aulas y grupos, ahora se debe seleccionar servidor ogBoot y luego oglive y plantilla dentro de dicho servidor. + ## [1.4.0] - 2026-04-16 ### Added - Añadida gestión de múltiples Dhcps diff --git a/debian/oggui.postinst b/debian/oggui.postinst index 996fe05..5ec619a 100644 --- a/debian/oggui.postinst +++ b/debian/oggui.postinst @@ -22,11 +22,19 @@ restore_config_if_modified() { if [ -f "$backup" ]; then if ! cmp -s "$new" "$backup"; then - echo ">>> Archivo modificado por el usuario detectado en $new" - echo " - Guardando archivo nuevo como ${new}.new" - mv -f "$new" "${new}.new" - echo " - Restaurando archivo anterior desde backup" - mv -f "$backup" "$new" + if [ "$new" = "$CONFIG_FILE" ]; then + echo ">>> Fusionando configuración de usuario en $new" + # El operador '*' realiza un merge recursivo: + # Preserva los valores del usuario (.[1]) y añade solo las claves nuevas del paquete (.[0]) + jq -s '.[0] * .[1]' "$new" "$backup" > "${new}.tmp" && mv "${new}.tmp" "$new" + rm -f "$backup" + else + echo ">>> Archivo modificado por el usuario detectado en $new" + echo " - Guardando archivo nuevo como ${new}.new" + mv -f "$new" "${new}.new" + echo " - Restaurando archivo anterior desde backup" + mv -f "$backup" "$new" + fi else echo ">>> El archivo $new no ha cambiado desde la última versión, eliminando backup" rm -f "$backup" diff --git a/ogWebconsole/src/app/app-routing.module.ts b/ogWebconsole/src/app/app-routing.module.ts index 75ce24e..0ef750c 100644 --- a/ogWebconsole/src/app/app-routing.module.ts +++ b/ogWebconsole/src/app/app-routing.module.ts @@ -36,6 +36,7 @@ import { EnvVarsComponent } from "./components/admin/env-vars/env-vars.component import { MenusComponent } from "./components/menus/menus.component"; import { OgDhcpSubnetsComponent } from "./components/ogdhcp/og-dhcp-subnets.component"; import { DhcpServersComponent } from './components/ogdhcp/dhcp-servers/dhcp-servers.component'; +import { BootServersComponent } from './components/ogboot/boot-servers/boot-servers.component'; import { RunScriptAssistantComponent @@ -45,6 +46,7 @@ import { LogoutGuard } from './guards/logout.guard'; import { HardwareComponent } from './components/hardware/hardware.component'; import { HardwareProfileComponent } from './components/hardware-profile/hardware-profile.component'; import { HardwareTypeComponent } from './components/hardware-type/hardware-type.component'; +import { BootServerDashboardComponent } from './components/ogboot/boot-server-dashboard/boot-server-dashboard.component'; const routes: Routes = [ { path: '', redirectTo: 'auth/login', pathMatch: 'full' }, { @@ -60,6 +62,8 @@ const routes: Routes = [ { path: 'ogboot-status', component: OgbootStatusComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'subnets', component: OgDhcpSubnetsComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'dhcp-servers', component: DhcpServersComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, + { path: 'boot-servers', component: BootServersComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, + { path: 'boot-servers/:uuid', component: BootServerDashboardComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'commands', component: CommandsComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'commands-groups', component: CommandsGroupsComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, { path: 'commands-task', component: CommandsTaskComponent, canActivate: [roleGuard], data: { allowedRoles: ['super-admin', 'ou-admin'] } }, diff --git a/ogWebconsole/src/app/app.component.ts b/ogWebconsole/src/app/app.component.ts index d681b66..c39354c 100644 --- a/ogWebconsole/src/app/app.component.ts +++ b/ogWebconsole/src/app/app.component.ts @@ -13,6 +13,6 @@ export class AppComponent { this.translateService.use(savedLanguage); } ngOnInit() { - sessionStorage.setItem('language', 'es'); + // Language is already handled in constructor } } diff --git a/ogWebconsole/src/app/app.module.ts b/ogWebconsole/src/app/app.module.ts index 922ca60..f728d16 100644 --- a/ogWebconsole/src/app/app.module.ts +++ b/ogWebconsole/src/app/app.module.ts @@ -58,10 +58,10 @@ import { MatProgressSpinner } from "@angular/material/progress-spinner"; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu"; import { MatAutocomplete, MatAutocompleteTrigger } from "@angular/material/autocomplete"; -import { MatChip, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule } from "@angular/material/chips"; +import { MatChipsModule } from "@angular/material/chips"; import { ClientViewComponent } from './components/groups/shared/client-view/client-view.component'; -import { MatTab, MatTabGroup } from "@angular/material/tabs"; -import { MatTooltip } from "@angular/material/tooltip"; +import { MatTabsModule } from "@angular/material/tabs"; +import { MatTooltipModule } from "@angular/material/tooltip"; import { MatExpansionModule } from '@angular/material/expansion'; import { DragDropModule } from '@angular/cdk/drag-drop'; import { ToastrModule } from 'ngx-toastr'; @@ -193,10 +193,19 @@ import { HardwareCollectionModalComponent } from './components/hardware-profile/ import { HardwareTypeComponent } from './components/hardware-type/hardware-type.component'; import { ShowDetailsComponent } from './components/hardware-type/show-details/show-details.component'; import { DiskPartitionSelectorComponent } from './components/groups/shared/disk-partition-selector/disk-partition-selector.component'; +import { BootServersComponent } from './components/ogboot/boot-servers/boot-servers.component'; +import { ManageBootServerComponent } from './components/ogboot/manage-boot-server/manage-boot-server.component'; +import { BootServerDashboardComponent } from './components/ogboot/boot-server-dashboard/boot-server-dashboard.component'; +import { OgcoreStatusComponent } from './components/global-status/ogcore-status/ogcore-status.component'; +import { GlobalOgbootStatusComponent } from './components/global-status/ogboot-status/ogboot-status.component'; +import { OgrepositoryStatusComponent } from './components/global-status/ogrepository-status/ogrepository-status.component'; +import { OgdhcpStatusComponent } from './components/global-status/ogdhcp-status/ogdhcp-status.component'; export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http, './locale/', '.json'); } +import { PageNotFoundComponent } from './shared/page-not-found/page-not-found.component'; + export function initializeApp(configService: ConfigService) { return () => configService.loadConfig(); } @@ -324,7 +333,15 @@ registerLocaleData(localeEs, 'es-ES'); HardwareCollectionModalComponent, HardwareTypeComponent, ShowDetailsComponent, - AssetManagerModalComponent + AssetManagerModalComponent, + BootServersComponent, + ManageBootServerComponent, + BootServerDashboardComponent, + OgcoreStatusComponent, + GlobalOgbootStatusComponent, + OgrepositoryStatusComponent, + OgdhcpStatusComponent, + PageNotFoundComponent ], bootstrap: [AppComponent], imports: [BrowserModule, @@ -349,7 +366,7 @@ registerLocaleData(localeEs, 'es-ES'); MatProgressBarModule, MatStepperModule, DragDropModule, - MatSlideToggleModule, MatMenu, MatMenuTrigger, MatMenuItem, MatAutocomplete, MatChipListbox, MatChipOption, MatChipSet, MatChipsModule, MatChip, MatProgressSpinner, MatTabGroup, MatTab, MatTooltip, + MatSlideToggleModule, MatMenu, MatMenuTrigger, MatMenuItem, MatAutocomplete, MatChipsModule, MatProgressSpinner, MatTabsModule, MatTooltipModule, MatExpansionModule, NgxChartsModule, MatDatepickerModule, diff --git a/ogWebconsole/src/app/components/admin/env-vars/env-vars.component.html b/ogWebconsole/src/app/components/admin/env-vars/env-vars.component.html index d9ef0db..c7a23ab 100644 --- a/ogWebconsole/src/app/components/admin/env-vars/env-vars.component.html +++ b/ogWebconsole/src/app/components/admin/env-vars/env-vars.component.html @@ -1,20 +1,20 @@
| {{ column.header }} | +{{ column.header | translate }} | {{ column.cell(role) }} | {{ 'columnActions' | translate }} | +{{ 'actions' | translate }} |
|---|