From e08ffb1b680456f3bede38c492312d84a9df7c75 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Sat, 25 Apr 2026 22:14:05 +0000 Subject: [PATCH] docs(vm201): document ROA + CONTAFIN update server (IIS apps) Adds vm201-roa-update-server.md describing the two IIS virtual apps under roa.romfast.ro that distribute application updates to ROMFAST clients: - /roaupdate -> D:\ROAUPDATE: per-client VFP XML manifests, _ARHIVE ZIPs for 35+ ROA modules (ROACONT, ROAFACTURARE, ROAGEST, etc.), SVN-backed DB scripts, xmlupdatecreator workflow. - /contafinupdate -> D:\APPUPDATESERVERAVFP: ActiveVFP server with AVFPHandler for *.avfp requests, VFP9 runtime. Also captures the full IIS site inventory (Default Web Site, ROA2WEB, Dokploy, Gitea, roa-qr, roa-apps) verified live on 2026-04-25, and lists the configured client manifests (ROMFAST, ROMPETROL, ARGENTA, etc.). Cross-references added in proxmox/README.md and vm201-windows/README.md. Co-Authored-By: Claude Opus 4.7 (1M context) --- proxmox/README.md | 5 +- proxmox/vm201-windows/README.md | 63 +++- .../docs/vm201-roa-update-server.md | 295 ++++++++++++++++++ 3 files changed, 352 insertions(+), 11 deletions(-) create mode 100644 proxmox/vm201-windows/docs/vm201-roa-update-server.md diff --git a/proxmox/README.md b/proxmox/README.md index a8a6d25..c0b2a08 100644 --- a/proxmox/README.md +++ b/proxmox/README.md @@ -62,6 +62,7 @@ proxmox/ │ ├── docs/ │ │ ├── vm201-certificat-letsencrypt-iis.md │ │ ├── vm201-dokploy-infrastructure.md # Arhitectură Dokploy + domenii +│ │ ├── vm201-roa-update-server.md # Server update aplicații ROA + CONTAFIN │ │ ├── vm201-btgo-playwright-service.md # Scraper BT George (Playwright Python) │ │ ├── vm201-troubleshooting-backup-nfs.md │ │ └── vm201-troubleshooting-pana-curent-2026-01-11.md @@ -307,13 +308,14 @@ ssh claude@100.95.55.51 ### VM 201 - Windows 11 **Director:** `vm201-windows/` -**IP:** DHCP | **Host:** pvemini | **Rol:** Reverse proxy IIS, client aplicații, scraper BT George +**IP:** DHCP | **Host:** pvemini | **Rol:** Server update aplicații ROA + CONTAFIN, reverse proxy IIS, client aplicații, scraper BT George | Fișier | Descriere | |--------|-----------| | `README.md` | Configurație hardware, servicii, rețea, backup | | `docs/vm201-certificat-letsencrypt-iis.md` | Certificate SSL Let's Encrypt, Win-ACME, SNI | | `docs/vm201-dokploy-infrastructure.md` | Arhitectură Dokploy + domenii | +| `docs/vm201-roa-update-server.md` | Server update aplicații ROA (`/roaupdate`) + CONTAFIN AVFP (`/contafinupdate`) | | `docs/vm201-btgo-playwright-service.md` | Scraper BT George — Playwright Python SDK, Windows Service | | `docs/vm201-troubleshooting-backup-nfs.md` | Incident backup NFS (2025-10-08) | | `docs/vm201-troubleshooting-pana-curent-2026-01-11.md` | Incident pană curent | @@ -431,6 +433,7 @@ ssh root@10.0.20.201 "qm snapshot 302 pre-test --description 'Before ROA test'" - **Informații generale** → `vm201-windows/README.md` - **Configurez site-uri IIS noi (Dokploy)** → `vm201-windows/docs/vm201-dokploy-infrastructure.md` - **Script setup IIS automat** → `vm201-windows/scripts/setup-new-iis-sites.ps1` +- **Publicare versiune nouă ROA / CONTAFIN către clienți** → `vm201-windows/docs/vm201-roa-update-server.md` - **Scraper BT George (btgo-playwright)** → `vm201-windows/docs/vm201-btgo-playwright-service.md` ### Dokploy + Traefik (LXC 103) diff --git a/proxmox/vm201-windows/README.md b/proxmox/vm201-windows/README.md index 158b1a3..9870db2 100644 --- a/proxmox/vm201-windows/README.md +++ b/proxmox/vm201-windows/README.md @@ -8,7 +8,7 @@ - **Host Proxmox:** pvemini (10.0.20.201) - **Storage:** local-zfs (ZFS pool) - **Status:** Running (onboot: enabled) -- **Rol:** Client aplicații Windows, SQL*Plus client, Reverse proxy IIS, Monitorizare UPS, Scraper BT George (btgo-playwright) +- **Rol:** Server update aplicații ROA + CONTAFIN, Reverse proxy IIS, Client aplicații Windows, SQL*Plus client, Monitorizare UPS, Scraper BT George (btgo-playwright) --- @@ -57,16 +57,56 @@ ssh root@10.0.20.201 "qm config 201 | grep -E 'efidisk|virtio'" - **SSL/TLS Termination** - Certificate Let's Encrypt pentru domenii externe - **SNI (Server Name Indication)** - Multiple certificate pe același IP - **Domenii gestionate:** - - roa.romfast.ro + - roa.romfast.ro (+ aplicațiile virtuale `/roaupdate` și `/contafinupdate`) + - roa2web.romfast.ro - dokploy.romfast.ro - gitea.romfast.ro - - roa-qr.romfast.ro ← **NOU** (proxy → LXC 103 Traefik → pdf-qr-app) - - *.roa.romfast.ro ← **NOU** wildcard (proxy → LXC 103 Traefik → Dokploy apps) + - roa-qr.romfast.ro (proxy → LXC 103 Traefik → pdf-qr-app) + - *.roa.romfast.ro wildcard (proxy → LXC 103 Traefik → Dokploy apps) + +**Site-uri IIS active (verificat 2026-04-25):** + +| Site | Binding | Path fizic | Rol | +|------|---------|------------|-----| +| Default Web Site | `roa.romfast.ro` :80/:443 + `*` :81 | `C:\inetpub\wwwroot` | Catch-all roa.romfast.ro → 10.0.20.36; conține `/roaupdate` și `/contafinupdate` | +| ROA2WEB | `roa2web.romfast.ro` :80/:443 | `C:\inetpub\roa2web` | Reverse proxy → 10.0.20.36 (web.config-only) | +| Dokploy | `dokploy.romfast.ro` :80/:443 | `C:\inetpub\dokploy` | Proxy → LXC 103 Traefik (Dokploy UI) | +| Gitea | `gitea.romfast.ro` :80/:443 | `C:\inetpub\gitea` | Proxy → LXC 106 Gitea | +| roa-qr | `roa-qr.romfast.ro` :80/:443 | `C:\inetpub\roa-qr` | Proxy → LXC 103 Traefik (pdf-qr-app) | +| roa-apps | `*.roa.romfast.ro` :80/:443 | `C:\inetpub\roa-apps` | Wildcard proxy → LXC 103 Traefik (Dokploy apps) | **Documentație:** Vezi `vm201-certificat-letsencrypt-iis.md` **Arhitectură Dokploy:** Vezi `vm201-dokploy-infrastructure.md` +**Server update ROA + CONTAFIN:** Vezi `vm201-roa-update-server.md` -#### 3. Monitorizare UPS +#### 3. Server Update Aplicații ROA + CONTAFIN +- **Sub Default Web Site (`roa.romfast.ro`):** + - `/roaupdate` → `D:\ROAUPDATE` — distribuie ZIP-urile de update pentru + modulele ROA (ROACONT, ROAFACTURARE, ROAGEST, ROAIMOB, ROARES, ROANOR, + ROASAL, etc. — peste 35 module) plus scripturi DB versionate în SVN. + - `/contafinupdate` → `D:\APPUPDATESERVERAVFP` — server ActiveVFP (AVFP) + pentru update-urile aplicației CONTAFIN (handler `*.avfp` mapat în IIS). +- **Mecanism update:** stația clientului citește + `https://roa.romfast.ro/roaupdate/.xml` (manifest VFP cu versiuni + și `fileurl` către `_ARHIVE\\-x.y.z.ZIP`), compară cu + versiunile locale și descarcă diferențele. +- **Clienți configurați:** ROMFAST, ROMPETROL, ARGENTA, AUTOMOTIVE, CLEVER, + CONPRESS, EMS, EUROPEANMETALSERVICES, IMA, ROMCONSTRUCT, SIGMA, VADECO, + VENDING, ACN, AVIS, EDUARD, FRUVIMED, METACOM, METALICA, POLARIS, + PRINTCONCEPT, SOUTH, STEAUANORDULUI, UTMIDIA, VINRAI, VOICU + DEMOROA, + DEVROA, CUSTOMER_4859/4863/4880/4886/4995. Lista completă în + `D:\ROAUPDATE\*.xml`. +- **Build/publicare:** `xmlupdatecreator.exe` regenerează manifestele; + `tasks.bat` face `svn update` pe scripturile DB + (`D:\ROAUPDATE\DATABASE\SCRIPTURI` și `SCRIPTURI_CLAR`). +- **Raportare erori clienți:** endpoint extern + `romfast.dnsalias.com:3000/errors/create_xml` (configurat în + `D:\ROAUPDATE\settings.ini`). + +**Documentație:** Vezi `docs/vm201-roa-update-server.md` (structură folder, +format manifest, workflow publicare, riscuri backup). + +#### 4. Monitorizare UPS - **WinNUT Client** - Monitorizare vizuală status UPS în timp real - **Server NUT:** 10.0.20.201:3493 (pvemini) - **UPS:** nutdev1 (INNO TECH USB UPS) @@ -74,7 +114,7 @@ ssh root@10.0.20.201 "qm config 201 | grep -E 'efidisk|virtio'" **Documentație:** Vezi `ups/docs/INSTALARE-WINNUT.md` -#### 4. Scraper Banca Transilvania George (btgo-playwright) +#### 5. Scraper Banca Transilvania George (btgo-playwright) - **Repo:** `git@gitea.romfast.ro:romfast/btgo-playwright.git` - **Stack:** Python + `playwright==1.48.0` (Python SDK direct, nu MCP/CLI) - **Scop:** Extrage solduri conturi + descarcă CSV tranzacții din `go.bancatransilvania.ro` @@ -110,14 +150,16 @@ ssh root@10.0.20.201 "qm config 201 | grep -E 'efidisk|virtio'" - WebSockets Protocol - HTTP Redirect - URL Rewrite Module -- **Sites:** - - Default Web Site (roa.romfast.ro) - - Dokploy (dokploy.romfast.ro) - - Gitea (gitea.romfast.ro) +- **Sites (verificat 2026-04-25):** + - Default Web Site (roa.romfast.ro) — conține `/roaupdate` → `D:\ROAUPDATE` și `/contafinupdate` → `D:\APPUPDATESERVERAVFP`; restul proxy → 10.0.20.36 + - ROA2WEB (roa2web.romfast.ro) → proxy 10.0.20.36 + - Dokploy (dokploy.romfast.ro) → proxy LXC 103 Traefik + - Gitea (gitea.romfast.ro) → proxy LXC 106 - roa-qr (roa-qr.romfast.ro) → proxy LXC 103 Traefik - roa-apps (*.roa.romfast.ro) → proxy wildcard LXC 103 Traefik **Configurare SSL:** Vezi `vm201-certificat-letsencrypt-iis.md` +**Server update ROA + CONTAFIN:** Vezi `vm201-roa-update-server.md` #### 3. Win-ACME - **Versiune:** v2.2.9.1701 @@ -357,6 +399,7 @@ ssh root@10.0.20.201 "qm delsnapshot 201 pre-update-snapshot" ### Documentație VM 201 Specifică - **SSL Certificates IIS:** `docs/vm201-certificat-letsencrypt-iis.md` - **Arhitectură Dokploy + Domenii:** `docs/vm201-dokploy-infrastructure.md` +- **Server Update ROA + CONTAFIN:** `docs/vm201-roa-update-server.md` - **Scraper BT George (btgo-playwright):** `docs/vm201-btgo-playwright-service.md` - **Troubleshooting Incident 2025-10-08:** `docs/vm201-troubleshooting-backup-nfs.md` - **Troubleshooting Pană Curent 2026-01-11:** `docs/vm201-troubleshooting-pana-curent-2026-01-11.md` diff --git a/proxmox/vm201-windows/docs/vm201-roa-update-server.md b/proxmox/vm201-windows/docs/vm201-roa-update-server.md new file mode 100644 index 0000000..c7efcaa --- /dev/null +++ b/proxmox/vm201-windows/docs/vm201-roa-update-server.md @@ -0,0 +1,295 @@ +# VM 201 — Server Update Aplicații ROA + CONTAFIN + +## Obiectiv + +VM 201 găzduiește pe IIS două puncte de distribuție pentru update-urile +aplicațiilor ROMFAST către clienți: + +- **`roa.romfast.ro/roaupdate`** — distribuție ZIP-uri + scripturi DB pentru + modulele ROA (peste 35 module: ROACONT, ROAFACTURARE, ROAGEST, etc.). +- **`roa.romfast.ro/contafinupdate`** — server ActiveVFP (AVFP) pentru + update-uri aplicație CONTAFIN. + +Aceste două aplicații virtuale trăiesc sub site-ul **Default Web Site** +(`roa.romfast.ro`) și au path-uri fizice pe **D:\\** (separate de IIS root). + +--- + +## Layout IIS pe VM 201 (recap) + +``` +Default Web Site (roa.romfast.ro) → C:\inetpub\wwwroot (gol, doar landing IIS) +├── /contafinupdate [Application] → D:\APPUPDATESERVERAVFP (AVFP) +├── /roaupdate [Application] → D:\ROAUPDATE (ZIP + XML) +└── /* (catch-all) → proxy → 10.0.20.36 (ROA Windows prod) + +ROA2WEB (roa2web.romfast.ro) → C:\inetpub\roa2web (web.config-only proxy → 10.0.20.36) +Dokploy (dokploy.romfast.ro) → proxy LXC 103 Traefik +Gitea (gitea.romfast.ro) → proxy LXC 106 +roa-qr (roa-qr.romfast.ro) → proxy LXC 103 Traefik (pdf-qr-app) +roa-apps (*.roa.romfast.ro) → proxy LXC 103 Traefik (Dokploy apps) +Default Web Site → port 81 (binding intern) +``` + +--- + +## /roaupdate — Distribuție Module ROA + +**Path fizic:** `D:\ROAUPDATE` +**URL public:** `https://roa.romfast.ro/roaupdate/` +**Web.config:** Windows authentication + directory browse activat + +### Mecanism Update + +1. Aplicația ROA pe stația clientului (instalată din `ROASTART`) descarcă + `https://roa.romfast.ro/roaupdate/.xml`. +2. XML-ul listează modulele și versiunile curente pentru clientul respectiv, + plus URL-ul ZIP în `_ARHIVE`. +3. Stația compară versiunile cu cele instalate local. +4. Pentru fiecare modul cu versiune nouă, descarcă + `https://roa.romfast.ro/roaupdate/_ARHIVE//-x.y.z.ZIP`, + dezarhivează și înlocuiește binarele locale. + +### Structura `D:\ROAUPDATE` + +| Element | Conținut | +|---------|----------| +| `.xml` | Manifest update per client (vezi mai jos) | +| `ROASTART_.xml` | Manifest pentru bootstrap-ul `ROASTART` (COMUNROA, ROAPRINT, USERREPORTS) | +| `_ARHIVE//` | ZIP-urile efective per versiune (ex: `_ARHIVE\ROACONT\ROACONT-2.11.49.ZIP`) | +| `_UPDATE/` | Buffer de pregătire build-uri noi (LastWrite recent = build activ) | +| `/` | Sursele/proiectele VFP per modul (ex: `ROACONT`, `ROAFACTURARE`, `ROARES`) | +| `DATABASE/SCRIPTURI/`, `DATABASE/SCRIPTURI_CLAR/` | Scripturi SQL versiunate în SVN — pull cu TortoiseSVN | +| `xmlupdatecreator.exe` | Tool VFP de generare a XML-urilor de manifest | +| `tasks.bat` | Job orchestrare: `svn update` pe `SCRIPTURI` + `SCRIPTURI_CLAR`, lansare `tasks\tasks.exe` | +| `settings.ini` | Endpoint raportare erori (`romfast.dnsalias.com:3000/errors/create_xml`) | +| `who9.exe`, `romfast_suport.exe` | Utilitare auxiliare (suport remote + diagnostic VFP9) | +| `firmanoua.zip`, `ROAREGISTRATURA.zip` | Pachete inițializare clienți noi | + +### Format Manifest Client + +Exemplu fragment din `ROMPETROL.xml`: + +```xml + + ROACONT + 2.11.49 + \_ARHIVE\ROACONT\ROACONT-2.11.49.ZIP + + +``` + +`` — mesaj opțional afișat user-ului în timpul update-ului +(ex: instrucțiuni manuale, restart obligatoriu). + +### Module ROA Distribuite (extras din `ROMFAST.xml`) + +``` +ROAAPROV ROAAUTO ROACOMENZI ROACONT ROACONTRACTE +ROADECL ROADEF ROADEFSALARII ROADEVIZE ROAFACTURARE +ROAFURNIZORI ROAGEST ROAGRESTAURANT ROAHOTEL ROAHOTELCONFIG +ROAIMOB ROAINCHIDSAL ROAJURIDIC ROALUCRARI ROAMANAGER +ROAMASINI ROANOR ROAOBINV ROAOFERTA ROAOFERTARE +ROAPRETURI ROAPRODUCTIE ROAREGISTRATURA ROARES ROARESTAURANT +ROARETAIL ROASAL ROASALSPEC ROASITFIN ROASITOP +ROASUPORT ROAVIN +``` + +Modulul `ROASTART` (bootstrap) este publicat separat prin +`ROASTART_.xml` și include: `COMUNROA`, `ROAPRINT`, +`_USERREPORTS`. + +### Clienți Configurați (extras manifeste) + +Manifeste per client găsite în `D:\ROAUPDATE`: + +``` +ABCVAL ACN ARGENTA AUTOHAUS AUTOMOTIVE +AVIS CAMBRIDGE CLEVER CONPRESS CONPRESSHOLDING +EDUARD EMS EUROPEANMETALSERVICES FRUVIMED HANULPIRATILOR +IDEEA IMA METACOM METACOMBUSINESSSRL METALICA +METALICAD.G.SRL POLARIS PRINTCONCEPT ROMCONSTRUCT ROMFAST +ROMPETROL SIGMA SOUTH STEAUANORDULUI UTMIDIA +VADECO VENDING VENDINGMASTERSRL VINRAI VOICU +DEMOROA DEVROA DEVROA2 +CUSTOMER_4859 CUSTOMER_4863 CUSTOMER_4880 CUSTOMER_4886 CUSTOMER_4995 +``` + +### Scripturi DB (SVN) + +`tasks.bat` apelează TortoiseSVN pentru a aduce ultimele scripturi: + +```bat +TortoiseProc.exe /command:update /path:D:\ROAUPDATE\DATABASE\SCRIPTURI\ +TortoiseProc.exe /command:update /path:D:\ROAUPDATE\DATABASE\SCRIPTURI_CLAR\ +START D:\ROAUPDATE\DATABASE\SCRIPTURI_CLAR\2026 +START D:\ROAUPDATE\tasks\tasks.exe +``` + +Scripturile sunt versionate într-un repo SVN extern (vezi configul +TortoiseSVN local pentru URL). + +### Workflow Publicare Versiune Nouă + +1. Build modul VFP în `D:\ROAUPDATE\\`. +2. Generează ZIP în `_ARHIVE\\-x.y.z.ZIP`. +3. Rulează `xmlupdatecreator.exe` pentru regenerarea manifestului + `.xml` cu noua versiune. +4. Pentru update-uri DB: commit scripturi în SVN (la SCRIPTURI sau + SCRIPTURI_CLAR), apoi `tasks.bat` la următoarea rulare aduce update-ul + pe server. +5. Clienții văd noua versiune la următorul check (la pornire ROA sau + manual din meniu). + +--- + +## /contafinupdate — Server ActiveVFP pentru CONTAFIN + +**Path fizic:** `D:\APPUPDATESERVERAVFP` +**URL public:** `https://roa.romfast.ro/contafinupdate/` +**Stack:** ActiveVFP (Visual FoxPro server-side) + IIS handler `AVFPHandler` + +### Configurare AVFP + +`Web.Config` mapează toate request-urile `*.avfp` (și catch-all `*`) către +`AVFPHandler`, plus modulul `MazeComputer.AspManifestHelpers` pentru +procesarea manifestelor: + +```xml + + + + + + + + + + + + + +``` + +### `appupdateserver.ini` + +Configurarea conexiunilor către sursa de update: + +```ini +[general] +host=ROA_CENTRAL +user=soft_serii +password=*** +downloadpath=d:\_CONTAFINUPDATE +roadownloadpath=d:\ROAUPDATE\_UPDATE + +host_clienti=roa_romfast +user_clienti=romfast +password_clienti=*** + +host_soft=ROA_CENTRAL +user_soft=soft +password_soft=*** +``` + +(Parolele reale sunt în fișierul de pe VM; nu sunt incluse aici.) + +### Componente Cheie + +| Fișier | Rol | +|--------|-----| +| `default.avfp` | Entry-point AVFP (default document) | +| `activevfp.dll` (+ `.manifest`) | Handler AVFP nativ | +| `vfp9t.dll`, `VFP9RENU.DLL`, `vfp2c32.fll`, `json.fll` | Runtime VFP9 + extensii | +| `msvcr71.dll` | Runtime VC necesar VFP9 | +| `prg/`, `bin/`, `data/`, `reports/` | Cod, binare, date, rapoarte AVFP | +| `Web.Config` | Mapare handler AVFP | +| `setup603.cmd` | Setup AVFP 6.0.3 (instalare runtime + handler) | +| `log.txt` | Log activitate (rotated manual) | + +--- + +## Operațiuni Curente + +### Verificare Stare Update Server (din Proxmox) + +```bash +# Status IIS + applicații +ssh root@10.0.20.201 "qm guest exec 201 --timeout 30 -- powershell -Command \ + \"Import-Module WebAdministration; Get-WebApplication\"" + +# Modulele ROA cu update recent (ultima săptămână) +ssh root@10.0.20.201 "qm guest exec 201 --timeout 30 -- powershell -Command \ + \"Get-ChildItem 'D:\\ROAUPDATE' | Where-Object { \$_.LastWriteTime -gt (Get-Date).AddDays(-7) } | \ + Select-Object Name, LastWriteTime\"" + +# Verificare manifest client (din browser sau curl) +curl -s https://roa.romfast.ro/roaupdate/ROMFAST.xml | head -50 +``` + +### Test Conectivitate Client + +De pe stația clientului (sau VM 201 însăși): + +```powershell +# Test acces manifest +Invoke-WebRequest -Uri "https://roa.romfast.ro/roaupdate/ROMFAST.xml" -UseBasicParsing | + Select-Object StatusCode, @{n="Length";e={$_.Content.Length}} + +# Test descărcare ZIP +Invoke-WebRequest -Uri "https://roa.romfast.ro/roaupdate/_ARHIVE/ROACONT/ROACONT-2.11.49.ZIP" ` + -OutFile "$env:TEMP\test.zip" -UseBasicParsing +``` + +### Restart IIS (după modificări majore) + +```bash +ssh root@10.0.20.201 "qm guest exec 201 --timeout 30 -- cmd /c iisreset" +``` + +--- + +## Securitate și Acces + +- **/roaupdate** rulează cu `authentication mode="Windows"` în web.config. + Dacă se decide accesul anonim pentru clienți (caz uzual), trebuie + verificat că IIS Anonymous Authentication este activ pe folder. +- **/contafinupdate** folosește `identity impersonate=true` — handler-ul AVFP + rulează cu identitatea utilizatorului IIS curent. +- **TLS:** terminat la nivel de IIS pe `roa.romfast.ro` (certificat Let's + Encrypt — vezi `vm201-certificat-letsencrypt-iis.md`). +- **Endpoint raportare erori:** `romfast.dnsalias.com:3000/errors/create_xml` + (din `D:\ROAUPDATE\settings.ini`) — primește XML-uri de eroare de la + clienți. Nu e găzduit pe VM 201; verifică separat dacă serviciul rulează. + +--- + +## Riscuri și Atenționări + +- **Backup `D:\ROAUPDATE` și `D:\APPUPDATESERVERAVFP`:** ambele sunt pe + discul `D:`. Backup-ul Proxmox VZDump al VM 201 le acoperă (snapshot + întreg disk virtio0). Dar pentru recovery rapid al unei versiuni + individuale (`_ARHIVE\\-x.y.z.ZIP` șters accidental) e + util un backup separat al folderului. +- **SVN dependency:** scripturile DB sunt în SVN extern. Dacă serverul SVN + cade, `tasks.bat` eșuează la `svn update`. Verifică URL-ul SVN configurat + în TortoiseSVN local. +- **VFP9 runtime:** `D:\APPUPDATESERVERAVFP` depinde de `vfp9t.dll` și + `msvcr71.dll`. Nu redenumi/șterge. +- **Manifest XML cu encoding `Windows-1252`** — la editare manuală păstrează + encoding-ul (nu salva ca UTF-8) altfel parser-ul VFP de pe stația + clientului poate ceda. + +--- + +## Referințe + +- README VM 201: `../README.md` +- IIS SSL / Let's Encrypt: `vm201-certificat-letsencrypt-iis.md` +- Arhitectură domenii Dokploy: `vm201-dokploy-infrastructure.md` +- Aplicație CONTAFIN AVFP: documentație externă (ActiveVFP framework) + +--- + +**Ultima actualizare:** 2026-04-25 +**Autor:** Marius Mutu