Conectare headless (fara RDP) prin Bitvise de pe VM 303/304, modelul de drepturi CONTAFIN_ORACLE (NOM_FIRME/DEF_UTIL_GRUP/PACK_DREPTURI), cu precedentul Conpress/Sofronie Mihaela ca exemplu lucrat. Co-Authored-By: Claude Agent <noreply@anthropic.com>
5.5 KiB
Acordare drepturi utilizator pe firme, în ROA, la un client
Scop: dai unui utilizator existent acces la firme (companii) suplimentare într-un produs ROA (ROACONT etc.) instalat la un client, fără RDP — direct din LXC 171 prin VM 304/303 + Bitvise.
1. Conectare la serverul Oracle al clientului (fără RDP)
Contextul general (Bitvise, VM 303/304, cheia id_ed25519) e documentat în
acces-ssh-chei-angajati.md. Rezumat pentru execuție
headless, de pe LXC 171:
# VM-ul (ex. 304 = Win11-Marius) trebuie sa aiba QEMU guest agent activ:
ssh root@10.0.20.201 "qm agent <vmid> ping"
# Profilul Bitvise al clientului e in D:\roa\BITVISE\<client>.tlp pe VM.
# Executie de comanda pe serverul clientului, prin profil + cheia globala:
ssh root@10.0.20.201 "qm guest exec <vmid> -- 'C:\Program Files (x86)\Bitvise SSH Client\sexec.exe' -profile=D:/roa/BITVISE/<client>.tlp -unat=y -keypairFile=C:/Users/romfast/.ssh/id_ed25519 -cmdQuoted <comanda Windows>"
Observatii:
-cmdQuoted+ argumente ca simple cuvinte (fara ghilimele suplimentare) e singurul mod care supravietuieste lantul de citare bash → ssh →qm guest exec→cmd.exeremote. Cai cu spatii merg daca sunt UN singur argument (ex. calea catresexec.exe); pentru restul comenzii, foloseste/in loc de\unde se poate (Windows accepta ambele).- Fara
-keypairFileexplicit, conectarea pica cuAuthentication aborted: User input is disabled— profilul singur nu are credentiala incarcata in mod headless. - Serverul clientului accepta doar clienti SSH Bitvise (whitelist pe client software);
ssh/opensshstandard e respins cuClient software or version not permitted. - Daca serverul da
EOFla conectare, probabil e ban temporar de IP dupa prea multe incercari esuate intr-un interval scurt — se reia mai tarziu (vezi precedent laacces-ssh-chei-angajati.md, sectiunea conpress).
Transfer de fisiere (script SQL etc.)
sexec nu accepta comenzi multi-linie usor prin citare imbricata. Cel mai simplu: scrii
scriptul local pe VM (via qm guest exec ... powershell -Command "[IO.File]::WriteAllBytes(...)"
cu continutul in base64), apoi il urci pe serverul clientului cu sftpc:
ssh root@10.0.20.201 "qm guest exec <vmid> -- 'C:\Program Files (x86)\Bitvise SSH Client\sftpc.exe' -profile=D:/roa/BITVISE/<client>.tlp -unat=y -keypairFile=C:/Users/romfast/.ssh/id_ed25519 -cmd='put C:/Users/Public/script.sql script.sql'"
Nu folosi variabile de mediu Windows (%TEMP% etc.) in calea destinatie — sftpc nu le
expandeaza, creeaza literal un folder cu numele %TEMP%. Pune fisierul cu nume relativ simplu
(landeaza in home-ul contului virtual Bitvise, ex. C:\Users\BvSsh_VirtualUsers\).
2. Gasirea conexiunii Oracle (TNS) pe serverul clientului
type <ORACLE_HOME>\network\admin\tnsnames.ora
(ORACLE_HOME/TNS_ADMIN aflate cu echo %TNS_ADMIN% prin acelasi sexec.) De regula
service name-ul e ROA, port 1521, host = numele local al masinii (DESKTOP-...).
Parola standard pentru schema CONTAFIN_ORACLE (centralizeaza userii si drepturile pe
toate firmele clientului): ROMFASTSOFT.
3. Modelul de drepturi ROA (schema CONTAFIN_ORACLE)
Sursa: D:\roa\<produs>\COMUN\Drepturi utilizatori\drepturi_utilizatori.sql din orice
working copy ROA (identic in principiu intre produse). Tabele relevante:
UTILIZATORI(ID_UTIL, UTILIZATOR)— userii aplicatiei.NOM_FIRME(ID_FIRMA, FIRMA, SCHEMA, COD_FISCAL, STERS, ...)— firmele clientului. Pot exista mai multe randuri cu acelasi nume (istoric/duplicate) — verifica intotdeaunaSTERS=0inainte sa alegi ID_FIRMA.DEF_GRUP(ID_GRUP, GRUP, STERS)— grupuri de drepturi.DEF_UTIL_GRUP(ID_DUG, ID_UTIL, ID_GRUP, ID_FIRMA, ID_UTILOP, DATAORA, STERS)— leaga utilizator + grup + firma. Un user poate avea grupuri diferite pe firme diferite.
Acordarea se face doar prin procedura din PACK_DREPTURI (nu INSERT direct — procedura
verifica duplicate si arunca RAISE_APPLICATION_ERROR daca userul are deja drepturi acolo):
BEGIN
pack_drepturi.adauga_drepturi_firma(
p_id_util, -- ID_UTIL tinta
p_id_grup, -- ID_GRUP de aplicat (de regula: acelasi grup pe care userul il are deja pe o firma similara)
p_id_firma, -- ID_FIRMA (verificat STERS=0)
p_id_utilad -- ID_UTIL care face operatia; -1 = ADMIN (cont special, potrivit pentru interventii de suport)
);
COMMIT;
END;
/
Alte proceduri utile din acelasi pachet: sterge_drepturi_firma(ID_DUG, ID_UTILOP) (soft
delete, seteaza STERS=1), modifica_drepturi_firma(...).
Interogari de verificare, inainte de modificare
-- gaseste userul
SELECT id_util, utilizator FROM utilizatori WHERE UPPER(utilizator) LIKE '%NUME%';
-- gaseste firma (atentie la duplicate STERS=1)
SELECT id_firma, firma, schema, cod_fiscal, sters FROM nom_firme WHERE UPPER(firma) LIKE '%NUME_FIRMA%';
-- ce grup are userul deja, pe ce firme (alege un grup de referinta de aici)
SELECT a.id_dug, a.id_firma, c.firma, a.id_grup, b.grup
FROM def_util_grup a
LEFT JOIN def_grup b ON a.id_grup = b.id_grup
LEFT JOIN nom_firme c ON a.id_firma = c.id_firma
WHERE a.id_util = :id_util AND a.sters = 0;
Precedent
2026-09-03: acordat acces SOFRONIE MIHAELA (ID_UTIL 236, client Conpress Romfast) pe 3
firme noi, grup XENOTI (ID_GRUP 54, acelasi pe care-l avea deja pe firma Xenoti SRL):
Avangarde Luxury SRL (126), Cazare Constanta-Mamaia SRL (124, singura activa din 4
duplicate), Nicolas House Mamaia SRL (125).