Backend KIBJLS servis↵
Ovaj dokument sadži detalje o rest
i database
backend servisima. Opšte informacije o ovim servisima su dostupne u okviru dokumenta o osnovnim servisima.
Funkcionalnosti↵
- Cross-platform implementacija na DotNet.Core platformi i PostgreSQL bazi podataka.
- Implementira KIBJLS funkcionalnu specifikaciju koja se odnosi rad sa aproprijacijama, projektnim strukturama i plaćanjima.
- Niz aplikativnih metrika za svaku funkcionalnost kroz Influx/Statsd tehnologije.
- Agregacija i prezentacija logova koristeći ElasticSearch/Kibana
- Automatska dokumentacija REST interfejsa koristeći otvoreni format Swagger.
- Kompletno automatizovana infrastruktura.
- Kompletna automatizacija za deployment i development kroz
Invoke-Build
skript.
Info
Invoke-Build ?
bilo gde unutar lobe-rest
direktorijuma daje listu raspoloživih razvojnih/administratorskih akcija.
Organizacija repozitorijum-a↵
Kompletan source code frontend-a se fizički nalazi unutar lobe-rest
direktorijumu na git repozitorijumu. Značajne putanje uključuju:
source\service
Direktorijum sadrži dotnet.core source code koji se izvršava korišćenjemdotnet
komande.Lobe.Rest.Data.Provider\scripts
Sadrži skripte za migraciju i seed baze podatakaLobe.Rest.Api
Osnovni projekat za REST interfejs
scripts
Sadrži Powershell i druge skriptepslobe
Sadrži Powershell REST klijentatests
Sadrži automatske Pester testove svih osnovnih funkcionalnisti servisa
lobe-rest.build.ps1
SadržiInvoke-Build
skriptu kojim se realizuju bitne uobičajne operacije u development-u kao što su pokretanje servera na lokalnoj mašini, instalacija i konfiguracija prerekvizita itd.packages.ps1
Sadrži sve prerekvizite za sve tipove izvršenja (putem tagova).infrastructure
Direktorijum koji sadrži skripte za setup i konfiguraciju infrastrukturalnih elemenata
Upotreba↵
Servis je moguće koristiti putem HTTP protokola na uobičajeni način za REST servise. Lista svih podržanih end-point-a i način njihovog korišćenja dostupna je kroz Swagger web interfejs kojim <adresa_backend_servera>/swagger
6.
Radi lakšeg korišćenja REST servisa za CRF se razvija i Powershell klijent pslobe
[^gl-pslobe] koji se može upotrebiti na svakom modernom Windows OS bez dodatnih preduslova (na Unix-like systemima potrebno je imati instaliran Powershell).
Na sledećem primeru je prikazano logovanje na servis:
PS> import-module pslobe PS> $Env:CIR_URL = 'http://lobe-devel.nil.rs:2281/api' PS> Initialize-Session -Username tadmin -Password P@ssw0rd ...
Za prikaz svih pslobe
komandi potrebno je izvršiti Get-Command -Module pslobe
. Pomoć za konkretnu komandu dobija se na standardan Powershell način: Get-Help Register-AppropriationLoad
.
Informacije o rest servisu i infrastrukturalnim korisnicima se komandom LOBE Shell-a show rest
.
Razvoj↵
Da bi se pokrenuo servis na lokalnoj stanici u LOBE Shell se izvršava ib Run
komanda. Dok je server aktivan REST URL će biti svetle boje.
Komanda se izvršava unutar lobe-rest
direktorijuma u koji se pozicionira preko bookmark-a: go rest
Enter+Enter.
ib ?
bilo gde unutar lobe-rest
direktorijuma daje listu raspoloživih razvojnih/administratorskih akcija.
Info
Svaki projekat sadrži README.md i druge .md fajlove koji sadrži detaljne tehničke informacije.
Konfiguracija↵
Konfiguracija REST servisa se sprovodi putem fajla appSettings.<okruženje>.json
3. Fajl bez oznake okruženja sadrži sve moguće opcije sa podrazumevanim (default) vrednostima. Finalna konfiguracija dobija se spajanjem konfiguracije okruženja sa default konfiguracijom tako da postavke konfiguracije okruženja imaju prioritet.
REST servis ima veliki broj konfiguracionih parametara koji su podeljeni u sledeće sekcije:
!!! TODO: Sekcija je u fazi izrade
Detlji konfiguracionih parametara nalaze se u okviru README.md
dokumentacije na istoj lokaciji gde su i konfiguracioni fajlovi 4.
Internacionalizacija↵
Backend server nema posebnu lokalizaciju jer je predviđen za mašinsku upotrebu - internacionalizacija frontend servisa se koristi za skoro sve poruke krajnjim korisnicima sa sledećim izecima:
CirRestMailingService\Resources
Sadrži JSON šablone na engleskom i srpskoj ćirilici za sve email tipove koje sistem šalje.
Baza podataka↵
REST servis koristi PostgreSQL kao bazu podataka. Proces instalacije servera je automatizovan kroz PowerShell skriptu 1 i mehanizam instalacije projektnih zvisnosti 2.
Migracija baze podataka sprovodi se korišćenjem Microsoft Entity Framework i odgovarajućih Invoke-Build komandi.
Informacije o bazi podataka i korisnicima spovodi se komandom LOBE Shell-a show db
.
(develop~) STAGING> show db DatabaseName : Cir SqlServer Name : Sql Server 2016 Enterprise Edition ISO : \\nas.mfin.trezor.rs\itshare\Instalacije\Microsoft\SQL Server\... Users Admin : {sa, ***** } Admin_Credential : System.Management.Automation.PSCredential ...
Inicijalne organizacije i korisnici↵
CRF servis zahteva da baza podataka sadrži minimalni set podataka u bilo kom okruženju. Ovo se postiže u procesu zasejavanja baze podataka (seed), koji se sprovodi prilikom inicijalne migracije baze jednokratno.
U procesu zasejavanja podataka, formira se i set osnovnih organizacija i korisnika. U sledećoj listi prikazan je set inicijalnih organizacija, njihovih korisnika i ovlašćenja:
Organizacija | Korisnik | Ovlašćenja | Komentar |
---|---|---|---|
0. Administracija | Svima nadređena organizacija | ||
super_admin | admin | Maksimalna prava i ovlašćenja | |
control | pregled, eksport | Za regulatorni organ | |
1. Republika | Nadređena svim KJS | ||
republika | admin | Maksimalna prava i ovlašćenja | |
2. PPL Administracija | Nadređenaa svim PPL | ||
ppl_admin | admin | Maksimlna prava i ovlašćenja | |
3. MF-Uprava za trezor | |||
tadmin | local admin | Trezor lokalni administrator | |
operator | odobravanje org. | Operator filijale | |
jafin | reg. plaćanja | Integracija sa JAFIN | |
trezor.intervencija | local admin | Obezbeđuje impersonalizaciju PL |
Svi inicijalni korisnici imaju šifru P@ssw0rd
.
Opasnost
U produktivnom okruženju potrebno je ručno izmeniti lozinke svim ovim korisnicima. Ovo je jedino moguće uraditi ručno, tako što se korisnik loguje kao svaki od ovih korisnika i promeni lozinku na željenu kroz profil opcije na frontend-u.
Na produktivnom okruženju sve dodeljene lozinke sačuvane su u CIR Secrets Store pod putanjom production/users/<username>
i uz učitani CIR Shell ih je moguće dobiti na sledeći način:
Show-Secret production/users/tadmin
-
http://gitlab.mfin.trezor.rs/CIR/cir/tree/46ffaf0607be6160dc5d054ac01df8d5197435a9/cir-rest/infrastructure/sql-server ↩
-
http://gitlab.mfin.trezor.rs/CIR/cir/tree/9436f5e45b1912f5394e104bfe57ac01964ec49e/cir-rest/packages.ps1#L26-37 ↩
-
http://gitlab.mfin.trezor.rs/CIR/cir/tree/develop/cir-rest/source/service/CirRestWeb/appsettings.json ↩
-
http://gitlab.mfin.trezor.rs/CIR/cir/tree/develop/cir-rest/source/service/CirRestWeb/README.md ↩
-
http://gitlab.mfin.trezor.rs/CIR/cir/tree/develop/cir-rest/scripts/pscir ↩
-
Link za produktivno okruženje je https://rcrf.trezor.gov.rs/swagger ↩