Skip to content

marge-lab/test-setup-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

test-setup-scripts

Paigaldus- ja seadistus-skriptid testimismasina (Linux / macOS / Windows) kiireks ülesseadmiseks testimistöö jaoks.

Skriptid jagunevad kahte rühma:

  1. Web eID näidisrakendused — PHP, Java, .NET (main-haru ja harude testimine)
  2. Muud seadistused ja juhendid — VMware shared folder, masina ärkvel hoidmine (keep-awake), PuTTY SSH-võti

🔖 Enne alustamist — ngrok auth token (Windows / macOS Python-skriptid)

Mis tahes *-remote* Python-skripti (setup-web-eid-dotnet-remote.py, setup-web-eid-dotnet-branch-remote.py) enne käivitust:

  • Windows: notepad %USERPROFILE%\ngrok-auth-token.txt
  • macOS / Linux: nano ~/ngrok-auth-token.txt
  • Sisu: ainult token (üks rida, ilma ngrok config add-authtoken käsuta ega jutumärkideta), salvesta.
  • Token: https://dashboard.ngrok.com/get-started/your-authtoken (tasuta konto)
  • Pärast esimest jooksu kustuta fail käsitsi (token elab edaspidi ngrok.yml-is): del %USERPROFILE%\ngrok-auth-token.txt / rm ~/ngrok-auth-token.txt.
  • Üksikasjalikud env-muutuja ja paste-i alternatiivid on iga remote-skripti sektsioonis allpool.

Sisukord

Web eID näidisrakendused (üksikasjad)

Web eID rakendus (web-eid-app) (üksikasjad)

Muud seadistused ja juhendid (üksikasjad)

  • VMware Shared Folder
  • Keep awake — Ubuntu/GNOME, macOS, Windows 10/11
  • PuTTY SSH-võtmega ühendus (Windows)

Märkus: alamskriptid on <details> plokkides — kliki noolt nime ees, et avada.


Web eID näidisrakendused

Skriptid kloonivad web-eid GitHub-projektist vastava web-eid-authtoken-validation-* repo, ehitavad näiterakenduse ja käivitavad. Kõik avavad lõpus eraldi terminaliakna live-logiga (rakenduse päringud, sertide laadimine, OCSP/TSA tegevused reaalajas).

Main-haru skriptid

Repo main-harust ehitatud rakendused — sobivad reliisi-testimiseks.

Skript Otstarve Platvorm
setup-web-eid-php.sh Web eID PHP näiterakendus (lokaalne) Ubuntu
setup-web-eid-php-remote.sh Web eID PHP näiterakendus + ngrok (avalik HTTPS) Ubuntu
setup-web-eid-java.sh Web eID Java näiterakendus (ngrok-iga) Ubuntu, macOS
setup-web-eid-dotnet.sh Web eID .NET näiterakendus (lokaalne) Ubuntu
setup-web-eid-dotnet-remote.sh Web eID .NET näiterakendus + ngrok (avalik HTTPS) Ubuntu
setup-web-eid-dotnet.py (+ .cmd) Web eID .NET näiterakendus (Python-skript; lokaalne) Windows, macOS
setup-web-eid-dotnet-remote.py (+ .cmd) Web eID .NET näiterakendus + ngrok (Python; avalik HTTPS) Windows, macOS
PHP — Ubuntu (lokaalne, HTTPS localhost)
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-php.sh
chmod +x setup-web-eid-php.sh
bash setup-web-eid-php.sh
PHP — Ubuntu (remote, ngrok-tunneliga)

Sama PHP näiterakendus, aga avalikult internetist kättesaadav ngrok-iga — sobib näiteks PR-i jagamiseks arendajaga kaugteel või mobiilseadmest testimiseks.

wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-php-remote.sh
chmod +x setup-web-eid-php-remote.sh
bash setup-web-eid-php-remote.sh

Erinevus lokaalsest skriptist:

  • Paigaldab lisaks ngrok-i ja küsib auth tokenit (https://dashboard.ngrok.com/get-started/your-authtoken)
  • ngrok tunneldab Apache HTTPS-i (port 443) avalikku URL-i
  • example/src/app.conf.php origin_url uuendatakse iga jooksu ajal ngrok URL-iks (Web eID library nõuab vastavust)
Java — Ubuntu
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-java.sh
chmod +x setup-web-eid-java.sh
bash setup-web-eid-java.sh

Eeldused: Java-skript vajab ngrok auth tokenit (küsitakse sammus 3/7). Tee endale tasuta konto ja kopeeri token: https://dashboard.ngrok.com/get-started/your-authtoken

Java — macOS
curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-java.sh
chmod +x setup-web-eid-java.sh
bash setup-web-eid-java.sh

Eeldused: ngrok auth token (vt Java — Ubuntu).

Java — repo struktuur ja ehituse väljund

Skript kloonib repo ~/projects/web-eid/ alla ja teeb selle sees kaks eraldi ehitust (sammud 5/7 ja 6/7):

web-eid/                              ← repo juur
├── pom.xml                ┐
├── src/                   │  TEEK (eu.webeid.security:authtoken-validation)
│   ├── main/java/         │
│   └── test/java/         ┘
├── target/                              ← teegi build-väljund (mvn install paneb siia .jar-id)
│   └── authtoken-validation-1.2.3.jar
├── example/                             ← NÄIDISRAKENDUS
│   ├── pom.xml            ┐
│   ├── src/               │  eu.webeid.example:web-eid-springboot-example
│   └── target/            ┘
│       └── web-eid-springboot-example-1.2.3.jar
├── LICENSE
└── README.md

NB! Versioon 1.2.3 näites on näitlik — sinu repo tegelikus väljundis on praeguse haru versioon (vaata pom.xml <version> välja või target/ kausta failide nime).

Kuidas seda kontrollida:

# Mis on teegi target-i sees?
ls ~/projects/web-eid/target/
# Peaks olema: authtoken-validation-X.Y.Z.jar (+ sources, javadoc, classes/, test-classes/, surefire-reports/...)

# Mis on näidisrakenduse target-i sees?
ls ~/projects/web-eid/example/target/
# Peaks olema: web-eid-springboot-example-X.Y.Z.jar (Spring Boot fat JAR)

Ehituse logi (live-vaade eraldi terminaliaknas kuvatakse ehituse ajal automaatselt) on samuti vaadeldav käsitsi:

less -R ~/tools/build.log
.NET — Ubuntu (lokaalne, HTTPS localhost:44391)
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet.sh
chmod +x setup-web-eid-dotnet.sh
bash setup-web-eid-dotnet.sh

Skript käivitab dotnet run-i vaikimisi Development-režiimis (ASPNETCORE_ENVIRONMENT default-väärtus). See režiim toetab test ID-kaartidega testimist (~/.digidocpp/tsl/EE_T.xml lubab test-CA-d).

Vajadusel küsib skript sudo parooli (libdigidocpp-csharp paigaldamiseks).

.NET — Windows / macOS (Python-skriptiga, lokaalne)

Cross-platform Python-skript, mis paigaldab .NET 8 SDK, Git-i ja DigiDoc4 Client-i (kui pole), kloonib repo, patchib .csproj-i ja käivitab näiterakenduse https://localhost:44391. Sõltuvused: ainult Python 3.8+ standard-teek (EI vaja pip install-i).

Töövoog:

Windows-i kasutaja:  topeltklikk setup-web-eid-dotnet.cmd
                     → kontrollib Python (paigaldab winget-iga kui pole)
                     → käivitab setup-web-eid-dotnet.py
macOS-i kasutaja:    python3 setup-web-eid-dotnet.py    (otse terminalis)

Windows:

:: Lae alla mõlemad failid (curl töötab nii cmd-aknas kui PowerShell-is,
:: Windows 10/11-l on curl.exe sisseehitatud)
curl -o setup-web-eid-dotnet.cmd https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet.cmd
curl -o setup-web-eid-dotnet.py https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet.py

:: Vaikimisi: dev-profile (test ID-kaardid, ASPNETCORE_ENVIRONMENT=Development)
.\setup-web-eid-dotnet.cmd

:: VOI: prod-profile (live ID-kaardid, ASPNETCORE_ENVIRONMENT=Production)
.\setup-web-eid-dotnet.cmd --profile prod

Kui Python pole paigaldatud, .cmd küsib Paigaldada Python nuud [Y/N] ja paigaldab automaatselt winget-iga. Pärast Pythoni installi kuvab "sulge see aken, ava uus" sõnumi (PATH-i värskendus). Topeltkliki .cmd-l uuesti.

macOS:

# Lae alla ainult .py (cmd pole vaja)
curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet.py

# Vaikimisi: dev-profile (test ID-kaardid)
python3 setup-web-eid-dotnet.py

# VOI: prod-profile (live ID-kaardid)
python3 setup-web-eid-dotnet.py --profile prod

Skript:

  1. Kontrollib + paigaldab .NET 8 SDK (winget install Microsoft.DotNet.SDK.8 Windowsil, brew install --cask dotnet-sdk Mac-il)
  2. Kontrollib + paigaldab Git
  3. Kontrollib libdigidocpp dev-teeki ja paigaldab uusima libdigidocpp*x64.msi GitHub releases-ist (https://github.com/open-eid/libdigidocpp/releases). NB! See EI OLE sama mis DigiDoc4 Client (kasutaja-tarkvara) — libdigidocpp on developer-teek, mida vajab .NET näiterakendus
  4. Kloonib web-eid-authtoken-validation-dotnet main-haru
  5. Patchib .csproj: PackageReference WebEid.SecurityProjectReference (lokaalne lähtekood)
  6. Kopeerib C:\Program Files\libdigidocpp\include\digidocpp_csharp\*.cs → projekti DigiDoc/ (enne build-i, kuna .cs failid kompileeritakse projekti)
  7. Seadistab HTTPS dev-sertifikaadi (dotnet dev-certs https --trust). ⚠️ Windowsil avaneb turvadialoog "Security Warning — Install certificate?":
    • Vajuta "Yes" — sertifikaat lisatakse Windows-i Trusted Root-i, https://localhost:44391 töötab ilma brauseri-hoiatusteta, Web eID extension saab korrektselt töötada.
    • Kui klõpsad "No" — paigaldus on katki: brauser näitab "Your connection is not private" hoiatust ja Web eID extension võib keelduda HTTPS-päringust. Sertifikaat on self-signed AINULT localhost-i jaoks (sinu enda masin), pole turvaohtu — vajuta julgelt Yes.
  8. Dev-profile: loob test-TSL flag-faili (%APPDATA%\digidocpp\tsl\EE_T.xml Windowsil, ~/.digidocpp/tsl/EE_T.xml macOS-il). Prod-profile: EE_T.xml-i ei loo (live-kaardid kasutavad live TSL-i).
  9. Ehitab — dotnet restore + dotnet build
  10. Kopeerib pärast build-i ülejäänud libdigidocpp failid (DLL-id + schema/ kaust) → bin\Debug\net8.0\ (vastab ametliku juhendi sammule xcopy /s ja "Also copy folder schema"). Prod-profile: lisaks loob bin\Debug\net8.0\digidocpp.conf ts.url-iga (Variant 2 ametlikust juhendist — Eesti eID test-TSA URL, mis ei vaja SK-tasulist kontot). Käivitab dotnet run --no-build koos ASPNETCORE_ENVIRONMENT=Development (dev) või Production (prod) ja avab brauseri.

Profiilide erinevus:

Aspekt --profile dev (vaikimisi) --profile prod
ASP.NET keskkond Development Production
ID-kaardid Test-kaardid (JÕEORG jms) Live-kaardid
Trusted CA-d Certificates/Dev/*.cer (test) Certificates/Prod/*.cer (live)
TSL Test-TSL (EE_T.xml flag) Live-TSL
TSA URL http://demo.sk.ee/tsa (test) Eesti eID test-TSA URL (tasuta, ilma SK-lepinguta)
Source-patch DigiDocConfiguration.cs ei ei (kasutab Variant 2 — digidocpp.conf)

Hoiatus prod-profile-i kohta: vaikimisi kasutatav TSA URL on test-TSA — sobib testimiseks, aga päris-produktsiooni jaoks vaja SK-tasulist TSA-kontot ja URL tuleb vahetada lepingu-kohasele (nt https://eid.sk.ee/tsa). Konkreetne URL ja seadistus on dokumenteeritud libdigidocpp wiki-s.

.NET — Windows / macOS (Python-skriptiga + ngrok, remote)

Sarnaselt lokaalsele Python-skriptile, aga ngrok-tunneliga — sobib näiteks testimiseks teisest masinast, mobiilseadmest või PR-i jagamiseks arendajaga kaugteel.

⚠️ TÄHELEPANU TEST-KAARDI KASUTAJALE:

Remote-skripti logist näed alati Hosting environment: Productionsee on õige, mitte bug. ÄRA võta selle pärast live-kaarti, kui sul on test-kaart.

Remote-skriptis --profile tähendab KAARDITÜÜPI, mitte ASP.NET-i environment-it:

  • --profile dev = test-kaart (JÕEORG jms) — VAIKIMISI
  • --profile prod = live-kaart (päris isiklik ID)

ASP.NET Hosting environment on remote-modes alati Production — ngrok-i UseForwardedHeaders() middleware vajab seda. Skript teeb source-patchid, mis sunnivad test-CA-d ja test-TSL-i tööle Production-mode-s.

Niisiis: test-kaart → --profile dev (vaikimisi). Logist näed Production, aga autentimine töötab test-kaardiga.

Windows:

:: Lae alla mõlemad failid
curl -o setup-web-eid-dotnet-remote.cmd https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-remote.cmd
curl -o setup-web-eid-dotnet-remote.py https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-remote.py

:: Vaikimisi: dev-profile (test-kaardid + source-patchid)
.\setup-web-eid-dotnet-remote.cmd

:: VOI: prod-profile (live-kaardid + digidocpp.conf ts.url-iga)
.\setup-web-eid-dotnet-remote.cmd --profile prod

macOS:

curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-remote.py
python3 setup-web-eid-dotnet-remote.py            # dev
python3 setup-web-eid-dotnet-remote.py --profile prod   # prod

Eeldused: ngrok auth token (tasuta konto): https://dashboard.ngrok.com/get-started/your-authtoken. Skript pakub kolme viisi tokeni sisestamiseks (skript proovib järjekorras):

  1. Tokeni-fail (SOOVITUSLIK — paste-i probleeme pole, töötab cmd-aknast väljaspool tehtud failiga):

    • Enne skripti käivitamist salvesta token faili:
      notepad %USERPROFILE%\ngrok-auth-token.txt
    • Pane sinna AINULT token (üks rida, mitte ngrok config add-authtoken ... käsku ega jutumärke), salvesta, sulge.
    • Käivita skript — leiab faili automaatselt sammus 5.
    • Pärast esimest jooksu kustuta fail käsitsi (token elab edaspidi ngrok.yml-is): del %USERPROFILE%\ngrok-auth-token.txt
  2. NGROK_AUTH_TOKEN env-muutuja (kehtib AINULT selles cmd-aknas, kuni see suletakse):

    :: cmd
    set NGROK_AUTH_TOKEN=2xxxxxxxxxxxxxxxxxxxx
    .\setup-web-eid-dotnet-remote.cmd
    # PowerShell
    $env:NGROK_AUTH_TOKEN='2xxxxxxxxxxxxxxxxxxxx'
    .\setup-web-eid-dotnet-remote.cmd
  3. Käsitsi paste konsooli (kõige ebausaldusväärsem — Windows cmd-i paste-i käitumine on vastuoluline):

    • Skript küsib paste-iga
    • Paremklikk cmd-aknas / Ctrl+V Windows Terminal-is, siis Enter

Kus token tegelikult salvestub: C:\Users\<sina>\AppData\Local\ngrok\ngrok.yml. Skript ise tokenit kuhugi mujale ei salvesta. Eemaldamiseks: kustuta see fail.

Erinevus lokaalsest Python-skriptist:

  • Paigaldab lisaks ngrok-i (otse-download GitHub-i releases-ist, mitte winget)
  • Küsib ngrok auth-tokenit (skripti sees, mitte eraldi aknas)
  • Rakendus kuulab HTTP-na 0.0.0.0:8080 — ngrok teeb HTTPS-i
  • ASPNETCORE_ENVIRONMENT=Production alati (ngrok-i UseForwardedHeaders() jaoks)
  • appsettings.json OriginUrl uuendatakse iga jooksu ajal ngrok URL-iks
  • --profile dev korral kaks source-patchi (vajalik, kuna Production-mode pole loomulik test-kaartide jaoks):
    • Startup.cs: LoadTrustedCaCertificatesFromDisk(true) — sunnib test-CA-d ka Production-modes
    • DigiDocConfiguration.cs: laiendab if-tingimust WEBEID_USE_TEST_TSL env-muutujaga — sunnib test-TSL-i
  • --profile prod korral source-patche EI tehta + bin\Debug\net8.0\digidocpp.conf ts.url-iga (Variant 2)

⚠️ Profile vs ASP.NET environment — oluline arusaam:

Remote-skriptis --profile tähendab kaarditüüpi, mitte ASP.NET-i Hosting environment-it. ASP.NET-i Hosting environment on remote-modes ALATI Production (ngrok-i UseForwardedHeaders() middleware vajab seda — Dev-modes oleks UseHttpsRedirection() aktiivne ja lõhuks ngrok-tunneli HTTP→HTTPS redirect-loop-iga).

--profile Kaardid ASP.NET Hosting env Kuidas test-kaardid prod-modes tööle saavad
dev Test-kaardid (JÕEORG jms) Production (alati remote-modes) Source-patchid Startup.cs (LoadTrustedCaCertificatesFromDisk(true)) + DigiDocConfiguration.cs env-flag WEBEID_USE_TEST_TSL=true
prod Live-kaardid (päris ID) Production (alati remote-modes) Loomulik (Cert/Prod/*.cer + live TSL); digidocpp.conf ts.url-iga

Niisiis: kui logist näed Hosting environment: Production ka --profile dev-iga — see on õige käitumine, mitte bug.

Akna käitumine:

  • Sama cmd-aken hoiab nii dotnet run-i kui ngrok-tunneli (PID Python-protsessis salvestatud)
  • Ctrl+C peatab MÕLEMAD (app + ngrok) — puhas väljumine
  • Brauser avaneb 8 sek pärast app-i käivitust ngrok URL-ile
.NET — Ubuntu (remote, ngrok-tunneliga)

Sama .NET näiterakendus, aga avalikult internetist kättesaadav ngrok-iga — sobib näiteks veebibrauseri-eksperdi remote-testimiseks mobiilseadmest.

wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-remote.sh
chmod +x setup-web-eid-dotnet-remote.sh
bash setup-web-eid-dotnet-remote.sh

Erinevus lokaalsest skriptist:

  • Paigaldab lisaks ngrok-i ja küsib auth tokenit (https://dashboard.ngrok.com/get-started/your-authtoken)
  • Rakendus kuulab HTTP-na 0.0.0.0:8080 — ngrok teeb HTTPS-i
  • ASPNETCORE_ENVIRONMENT=Production (kohustuslik, et UseForwardedHeaders loeks ngrok-i X-Forwarded-Proto header-it)
  • Test ID-kaardi tugi tuleb kahest patch-ist:
    • Startup.cs: LoadTrustedCaCertificatesFromDisk(true) — auth jaoks
    • ~/.digidocpp/digidocpp.conf (test-TSL URL + cert + TSA) — signimise jaoks
  • appsettings.json OriginUrl uuendatakse iga jooksu ajal ngrok URL-iks

Harude testimise skriptid

Repo arendusharust ehitatud rakendused — kasutatakse PR-ide testimiseks enne main-i ühendamist. Skript küsib (või võtab argumendiks) haru-nime, kloonib selle, ehitab valitud haru WebEid library lokaalselt ja kasutab seda example-app-i ehitamiseks. Iga keele jaoks veidi erinev pakkimine:

  • .NET: ehitatakse lokaalseks NuGet-paketiks versiooniga 1.2.0-beta1 (eristub upstream-i 1.2.0-st)
  • Java: installitakse lokaalsesse Maven cache'i, example-app kasutab automaatselt installitud versiooni
  • PHP: composer.json repositories blokis lisatakse git tüüpi upstream-link, version constraint muudetakse dev-<HARU>-ks
Skript Otstarve Platvorm
setup-web-eid-java-branch.sh Web eID Java näide suvalisest harust + ngrok Ubuntu, macOS
setup-web-eid-dotnet-branch.sh Web eID .NET näide suvalisest harust (lokaalne) Ubuntu
setup-web-eid-dotnet-branch-remote.sh Web eID .NET näide suvalisest harust + ngrok Ubuntu
setup-web-eid-dotnet-branch.py (+ .cmd) Web eID .NET näide suvalisest harust (Python-skript; lokaalne) Windows, macOS
setup-web-eid-dotnet-branch-remote.py (+ .cmd) Web eID .NET näide suvalisest harust (Python-skript; + ngrok) Windows, macOS
setup-web-eid-php-branch.sh Web eID PHP näide suvalisest harust (lokaalne) Ubuntu
setup-web-eid-php-branch-remote.sh Web eID PHP näide suvalisest harust + ngrok Ubuntu
.NET haru-testimine — Ubuntu (lokaalne)
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch.sh
chmod +x setup-web-eid-dotnet-branch.sh

# Interaktiivne: kuvab harude nimekirja ja küsib valikut
bash setup-web-eid-dotnet-branch.sh

# Konkreetne haru nimetus (asenda WE2-123 oma haru-nimega)
bash setup-web-eid-dotnet-branch.sh --branch WE2-123

Skript:

  1. Tõmbab web-eid-authtoken-validation-dotnet repo
  2. Laseb valida haru (interaktiivne nimekiri või --branch argument)
  3. Ehitab WebEid.Security projekti lokaalseks NuGet-paketiks versiooniga 1.2.0-beta1 (eristub upstream-i 1.2.0-st)
  4. Uuendab example-app-i .csproj-i: viite vahetatakse PackageReference WebEid.Security 1.2.0-beta1 peale
  5. Ehitab + käivitab example-app-i lokaalselt (https://localhost:44391)
  6. Pärast valmimist näitab:
    • DLL sisemine versioon (strings WebEid.Security.dll | grep beta) — kinnitab et lokaalne pakett on tegelikult kasutusel
    • Git haru + commit hash — auditeeritav

Kasulik, kui pead testima konkreetse arendaja PR-i enne main-i ühendamist.

.NET haru-testimine — Ubuntu (remote, ngrok-tunneliga)

Sama haru-testimine, aga ngrok-tunneliga — sobib näiteks PR-i jagamiseks arendajaga kaugteel või mobiilseadmest testimiseks.

wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch-remote.sh
chmod +x setup-web-eid-dotnet-branch-remote.sh

bash setup-web-eid-dotnet-branch-remote.sh
# Konkreetne haru nimetus (asenda WE2-123 oma haru-nimega):
bash setup-web-eid-dotnet-branch-remote.sh --branch WE2-123

Erinevus lokaalsest haru-skriptist (sama loogika nagu setup-web-eid-dotnet-remote.sh-s):

  • Paigaldab lisaks ngrok-i ja küsib auth tokenit
  • Rakendus kuulab HTTP-na 0.0.0.0:8080 — ngrok teeb HTTPS-i
  • ASPNETCORE_ENVIRONMENT=Production + WEBEID_USE_TEST_TSL=true
  • Test ID-kaardi tugi tuleb kahest source-patch-ist:
    • Startup.cs: LoadTrustedCaCertificatesFromDisk(true) — auth jaoks
    • DigiDocConfiguration.cs: laiendab if-tingimust WEBEID_USE_TEST_TSL env-muutujaga — signimise jaoks
  • appsettings.json OriginUrl uuendatakse iga jooksu ajal ngrok URL-iks
.NET haru-testimine — Windows / macOS (Python-skript, lokaalne)

Sama loogika mis Ubuntu-versioonis, aga Pythonis. Toetab --branch argumenti JA interaktiivset menüüd, --profile {dev,prod}.

Windows (cmd-aknas):

curl -o setup-web-eid-dotnet-branch.cmd https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch.cmd
curl -o setup-web-eid-dotnet-branch.py  https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch.py

:: Interaktiivne: kuvab harude nimekirja
.\setup-web-eid-dotnet-branch.cmd

:: Konkreetne haru, test-kaartidega (vaikimisi)
.\setup-web-eid-dotnet-branch.cmd --branch WE2-123

:: Live-kaardiga (digidocpp.conf ts.url-iga)
.\setup-web-eid-dotnet-branch.cmd --branch WE2-123 --profile prod

macOS (terminalis):

curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch.py
python3 setup-web-eid-dotnet-branch.py --branch WE2-123

.cmd kontrollib alguses, et Python on paigaldatud ja kui pole, pakub winget install Python.Python.3.12-i.

.NET haru-testimine — Windows / macOS (Python-skript, remote ngrok)

Sama loogika mis Ubuntu remote-versioonis (ngrok-tunnel + auth-token), aga Pythonis.

⚠ Enne käivitamist: valmista ette ngrok auth token — kõige usaldusväärsem viis on failimeetod (paste cmd-aknas on ebausaldusväärne).

notepad %USERPROFILE%\ngrok-auth-token.txt

Pane sinna AINULT token (üks rida, ilma ngrok config add-authtoken käsuta), salvesta, sulge. Skript leiab faili automaatselt sammus 5.

Tokeni saad: https://dashboard.ngrok.com/get-started/your-authtoken (tasuta konto). Pärast esimest jooksu kustuta fail käsitsi (token elab edaspidi ngrok.yml-is): del %USERPROFILE%\ngrok-auth-token.txt

Windows:

curl -o setup-web-eid-dotnet-branch-remote.cmd https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch-remote.cmd
curl -o setup-web-eid-dotnet-branch-remote.py  https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch-remote.py

:: Interaktiivne haru-valik + test-kaardid
.\setup-web-eid-dotnet-branch-remote.cmd

:: Konkreetne haru, live-kaardiga
.\setup-web-eid-dotnet-branch-remote.cmd --branch WE2-123 --profile prod

macOS:

curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-dotnet-branch-remote.py
python3 setup-web-eid-dotnet-branch-remote.py --branch WE2-123

(macOS-il pane fail ~/ngrok-auth-token.txt-i.)

Profile-i vahetus (devprod) on ohutu — skript taastab Startup.cs ja DigiDocConfiguration.cs igal käivitusel git HEAD-ist ja siis rakendab ainult valitud profile-i patche.

.NET branch-skriptide logifaili kasutamine

setup-web-eid-dotnet-branch.py ja setup-web-eid-dotnet-branch-remote.py kirjutavad rakenduse logi paralleelselt nii konsooli kui ka faili:

Platvorm Faili tee
Windows C:\Users\<sina>\tools\dotnet-app.log
macOS ~/tools/dotnet-app.log

NB! Iga uus käivitus kirjutab faili üle. Kui tahad eelmist alles hoida, kopeeri see enne uut käivitust kuhugi mujale.

Tüüpilised kasutused:

  1. Vaata logi terve sisu Notepadis (kõige lihtsam):

    notepad %USERPROFILE%\tools\dotnet-app.log
  2. Viimased 50 rida (nt pärast Ctrl+C-d kui konsooli scrollback liiga lühike):

    powershell -NoProfile -Command "Get-Content '%USERPROFILE%\tools\dotnet-app.log' -Tail 50"
  3. Otsi viga / sõnumeid (nt CertificateNotTrustedException, OCSP, signing):

    findstr /i "exception trusted error fail" %USERPROFILE%\tools\dotnet-app.log

    Või PowerShelliga rea-numbritega:

    Select-String -Path "$env:USERPROFILE\tools\dotnet-app.log" -Pattern 'Exception|fail|error'
  4. Saatmine arendajale (Jira/Slack/email manus):

    • Otse fail manusena ↑ asukohast
    • Või sisu clipboardi: clip < %USERPROFILE%\tools\dotnet-app.log (sobib lühikese logi puhul)
  5. Säilita eelmine logi enne uut käivitust:

    copy %USERPROFILE%\tools\dotnet-app.log %USERPROFILE%\Desktop\dotnet-app-2026-05-24.log

macOS-il asenda %USERPROFILE%\tools\dotnet-app.log~/tools/dotnet-app.log, kasuta cat / less / tail / grep-i nagu tavaliselt.

Miks log-fail on? Kui tester avastab probleemi tunde pärast jooksu lõppu, konsooli scrollback võib olla kadunud. Log-fail on pidev kirje sellest, mida rakendus iga päringu jooksul kuvas — kasulik bugi-raporti-le tõenduseks.

PHP haru-testimine — Ubuntu (lokaalne)
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-php-branch.sh
chmod +x setup-web-eid-php-branch.sh

# Kuvab harude nimekirja ja küsib valikut
bash setup-web-eid-php-branch.sh

# Konkreetne haru nimetus + teegi ühiktestid (asenda WE2-123 oma haru-nimega)
bash setup-web-eid-php-branch.sh --branch WE2-123 --with-tests

Skript:

  1. Tõmbab web-eid-authtoken-validation-php repo
  2. Laseb valida haru (interaktiivne nimekiri või --branch argument)
  3. Muudab example-rakenduse composer.json-i:
    • "web-eid/web-eid-authtoken-validation-php": "1.3.*""dev-<HARU>"
    • Lisab repositories bloki "type": "git" upstream-i URL-iga (NB: mitte "vcs" — see kasutaks GitHub API-d ja kukuks autentimisega)
  4. Käivitab composer update example-kataloogis
  5. Seadistab Apache (DocumentRoot → example/public, SSL)
  6. Pärast valmimist näitab haru + commit hash-i — auditeeritav
  7. --with-tests lipuga: jooksutab lisaks teegi ühiktestid (composer install + composer test repo juurkataloogis) ja näitab kokkuvõtte (Tests/Failures/Time)

Ühiktestide logi-aken (ainult --with-tests-iga):

  • Iga skripti-jooks salvestab logi timestamp-iga failinime alla, näiteks ~/composer-test-WE2-123-20260522-143015.log — vanad logid ei kao kui jooksutad uuesti.
  • Ebaõnnestumise korral avab skript automaatselt eraldi terminaliakna logi-vaatega (less -R ANSI värvidega). Aknas: Q väljub, /FAILURES viib ebaõnnestumiste plokini, /^[0-9]+) leiab ebaõnnestunud testide loendi, g/G viib algusesse/lõppu.
  • Edukal läbimisel küsib skript: Avada test-logi eraldi terminaliaknas? [y/N] — vajuta y + Enter kui tahad logi näha (nt tõestuseks kontrollida), muidu lihtsalt Enter ja minnakse edasi.
  • Taasavamiseks hiljem (mis tahes hetkel pärast skripti lõppu):
    bash ~/.web-eid-php-test-viewer.sh    # avaneb viimase jooksu logi
    # või otse konkreetse logi-fail:
    less -R ~/composer-test-WE2-123-20260522-143015.log
  • Tõestuseks salvestamine (puhas tekst ilma ANSI värvi-koodideta):
    sed -r 's/\x1b\[[0-9;]*[mGKH]//g' \
      ~/composer-test-WE2-123-20260522-143015.log \
      > ~/php-tests-WE2-123-passed.txt

Kasulik, kui pead testima konkreetse arendaja PR-i enne main-i ühendamist.

PHP haru-testimine — Ubuntu (remote, ngrok-tunneliga)

Sama haru-testimine, aga ngrok-tunneliga — sobib näiteks PR-i jagamiseks arendajaga kaugteel või mobiilseadmest testimiseks.

wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-php-branch-remote.sh
chmod +x setup-web-eid-php-branch-remote.sh

# Kuvab harude nimekirja ja küsib valikut
bash setup-web-eid-php-branch-remote.sh

# Konkreetne haru nimetus + teegi ühiktestid (asenda WE2-123 oma haru-nimega)
bash setup-web-eid-php-branch-remote.sh --branch WE2-123 --with-tests

Erinevus lokaalsest haru-skriptist:

  • Paigaldab lisaks ngrok-i ja küsib auth tokenit (https://dashboard.ngrok.com/get-started/your-authtoken)
  • ngrok tunneldab Apache HTTPS-i (port 443) avalikku URL-i
  • example/src/app.conf.php origin_url uuendatakse iga jooksu ajal ngrok URL-iks (Web eID library nõuab vastavust)
  • --with-tests lipp töötab sama nagu lokaalses skriptis — sh ebaõnnestumise korral avab automaatselt eraldi terminaliakna test-logi vaatega (less -R), edukal läbimisel uut akent ei avane (vt lokaalse skripti kirjeldust eespool)
Java haru-testimine — Ubuntu/macOS (ngrok-tunneliga)

Sarnaselt .NET- ja PHP-harude testimisele, aga Java/Maven-i jaoks. Toetab nii Linuxit (Ubuntu) kui macOS-i (x86_64 + arm64). Sudo ei ole vajalik — JDK ja ngrok paigaldatakse ~/tools/ alla.

# Ubuntu
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-java-branch.sh
chmod +x setup-web-eid-java-branch.sh

# macOS
curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-web-eid-java-branch.sh
chmod +x setup-web-eid-java-branch.sh

# Kuvab harude nimekirja ja küsib valikut
bash setup-web-eid-java-branch.sh

# Konkreetne haru nimetus (asenda release-1.2.3 oma haru-nimega)
bash setup-web-eid-java-branch.sh --branch release-1.2.3

Skript:

  1. Paigaldab portatiivse JDK 17 (Adoptium GA) ja ngrok-i ~/tools/ alla
  2. Küsib ngrok auth tokenit (eraldi terminaliaknas — vt https://dashboard.ngrok.com/get-started/your-authtoken)
  3. Tõmbab web-eid-authtoken-validation-java repo
  4. Laseb valida haru (interaktiivne nimekiri või --branch argument)
  5. Verifitseerib haru ja commit-i: soovitud vs aktiivne haru kontroll, kohalik vs origin/<HARU> commit-võrdlus, pealkiri + kuupäev — auditeeritav
  6. Ehitab root library mvn install-iga lokaalsesse Maven cache'i (mvn install jooksutab automaatselt ka ühiktestid enne installimist)
  7. Ehitab example-app-i Spring Boot fat JAR-iks (mvn package)
  8. Käivitab ngrok-tunneli + Spring Boot rakenduse, uuendab application-dev.yaml local-origin-i ngrok URL-iks
  9. Avab live-logi eraldi terminaliaknas (rakenduse päringud reaalajas)

Eraldi terminaliaknad mis avanevad:

  • Sammus 2 — ngrok auth tokeni dialoog
  • Sammus 5/6 vahel — ehituse live-logi (Maven väljund reaalajas; sulged X-iga kui valmis)
  • Pärast sammu 8 — rakenduse live-logi (Spring Boot päringud, OCSP/TSA tegevus)

Versiooni-detektsioon: skript nopib build-logist installitud library versiooni (authtoken-validation-X.Y.Z.jar) ja kuvab selle kokkuvõttes — nii saad kinnitada, et lokaalsesse Maven cache'i installiti just see versioon mida haru pom.xml-is on. Kui logist ei õnnestu, fallback loeb otse pom.xml-i <version> välja.

Kasulik release-haru või konkreetse PR-i testimiseks enne main-i ühendamist.

Live-logi aken — sulgemine, taas-avamine, peatamine

Kõik setup-web-eid-*.sh skriptid (nii main-haru kui harude testimise) avavad lõpus eraldi terminaliakna live-logiga (tail -f rakenduse logi peal). Käitumine järgib Unix-i tava — logi-aken on viewer, mitte controller: selle sulgemine ei mõjuta rakendust.

Tegevus Mis juhtub
Akna X-nupp Sulgeb AINULT logi-akna. Rakendus (ja ngrok kui see on) jäävad taustaks jooksma.
Ctrl+C logi-aknas Ignoreeritakse — Ctrl+C ei tapa midagi, et saaksid teksti (nt ngrok URL-i) kopeerida. Paljud terminal-id (Windows Terminal, VS Code, GNOME Terminal valitud teksti puhul) mappivad Ctrl+C kopeerimiseks.

Skripti lõpu-banneril ja logi-akna sees on selgelt välja kirjutatud:

  1. Logi uuesti avada (kui sulgesid akna):

    bash ~/tools/log-tail-helper.sh

    Helper-skript jääb kõvakettale, saad iga kord taasavada — kasutab sama logi-faili samade filtritega (TSL-spam .NET-i puhul välja).

  2. Rakenduse + ngrok-i peatamine — täpsed kill-käsud iga skripti lõpu-banneril näha. Näiteks .NET-remote-il:

    kill $(cat ~/tools/dotnet-app.pid)
    kill $(cat ~/tools/ngrok.pid)

PHP-skripti puhul on Apache system-teenus (mitte foreground-protsess) — seda peatatakse: sudo systemctl stop apache2.

⚠️ VMware Ubuntu VM-il PHP + Java koos (teadaolev konflikt)

Kui paigaldad mõlemad näited samasse Ubuntu VM-i, kukub Java Maven-ehitus samm 5/7-s OCSP unit-testi peal (VMware NAT-i DNS-hijack

  • kõrval töötav Apache). Enne Java skripti käivitamist:
sudo systemctl stop apache2
echo "127.0.0.2  invalid.invalid" | sudo tee -a /etc/hosts

Pärast Java näite valmis saamist saad Apache tagasi käima panna: sudo systemctl start apache2.


Web eID rakendus (web-eid-app)

NB! See ei ole sama mis näidisrakendused üleval. Need (setup-web-eid-*) ehitavad authtoken-validation näiteid (server-pool). See skript ehitab ja testib web-eid-app-i ennast — natiivset töölaua-rakendust, mis suhtleb kaardilugeja ja ID-kaardiga (get-signing-certificate / authenticate / sign).

Skript verifitseerib ehituse puhtas Docker-konteineris (CI paketiloend) ja teeb seejärel kohaliku ehituse, mida saab päris testkaardiga läbi katsetada. Käivitamise alguses laeb GitHub-ist haru-nimekirja ja laseb valida testitava haru (nt PR-i haru enne main-i ühendamist).

Skript Otstarve Platvorm
web-eid-app-build-ubuntu.sh web-eid-app ehitus (Docker + lokaalne) + kaarditest Ubuntu 24.04

Eeldused:

  • Ubuntu 24.04 (testitud 24.04.4 LTS, Docker 29.1.3)
  • Sudo-õigus (Dockeri + ehitus-sõltuvuste paigaldamiseks)
  • Kaardiga testimiseks (samm 6): ühendatud kaardilugeja + testkaart (PIN1 autentimiseks, PIN2 allkirjastamiseks)
web-eid-app — Ubuntu (Docker-verifitseerimine + kohalik kaarditest)
wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/web-eid-app-build-ubuntu.sh
chmod +x web-eid-app-build-ubuntu.sh
bash web-eid-app-build-ubuntu.sh

Skripti sammud:

  1. Haru valimine — laeb GitHub-ist (web-eid/web-eid-app) kõik saadaolevad harud, kuvab nummerdatud nimekirja, kasutaja valib numbri. Töötab nii gh CLI-ga kui ka curl-iga (fallback).
  2. Docker kontroll — kontrollib kas Docker on paigaldatud, paigaldab vajadusel (docker.io); testib hello-world-iga, et Docker töötab.
  3. Docker-põhine ehituse verifitseerimine — käivitab puhta ubuntu:24.04 konteineri, paigaldab CI paketiloendi, kloonib repo (--recurse-submodules), läheb valitud harusse, käivitab ./build.sh ja kontrollib, et .deb failid tekkisid. Logi: ~/claude-test/logs/docker-build-ci.log.
  4. Kohalik sõltuvuste paigaldamine — paigaldab samad CI paketid otse hostmasinasse (kohaliku ehituse ja kaarditesti jaoks).
  5. Kohalik ehitus — kloonib repo (või uuendab olemasoleva), läheb valitud harusse, käivitab ./build.sh ja kontrollib, et executable tekib: obj-x86_64-linux-gnu/src/app/web-eid.
  6. Kaardiga testimine — ootab kasutaja kinnitust, et kaardilugeja ja testkaart on ühendatud, seejärel jooksutab kolm käsku natiivrakenduse vastu:
    • get-signing-certificate — loeb kaardilt allkirjastamissertifikaadi (PIN puudub)
    • authenticate — autendib PIN1-ga, kontrollib JWT tokeni ja algoritmi (ES384)
    • sign SHA-384 — allkirjastab PIN2-ga, kontrollib allkirja ja algoritmi (ECC SHA-384)
  7. Kokkuvõte — kuvab kõigi sammude tulemused, valitud haru nime, logide asukoha ja executable-i tee.

Mida Docker EI kata: konteiner ei näe hostmasina kaardilugejat, seega rakenduse funktsionaalsust (samm 6) saab testida ainult kohaliku ehitusega otse hostmasinas. Docker-samm verifitseerib ainult ehituse puhtas keskkonnas (et CI paketiloend on piisav ja .deb failid tekivad).


Muud seadistused ja juhendid

Üldised testimismasina seadistus-skriptid ja juhendid (ei ole Web eID-spetsiifilised).

Skript / juhend Otstarve Platvorm
setup-vmware-shared-folder.sh VMware Shared Folder Ubuntu pool Ubuntu (VMware VM)
keep-awake.sh Keelab idle-actions (ekraan / sleep / ketas / lukustus) Ubuntu/GNOME, macOS
keep-awake.cmd Sama Windowsi versioon Windows 10/11
putty-ssh-voti.md PuTTY SSH-võtme seadistamine (OpenSSH→.ppk, Pageant) Windows
VMware Shared Folder

Paigaldab open-vm-tools'i, seadistab /etc/fstab rea, monteerib jagatud kausta ja loob sümbollingi kodukausta.

1. Hosti pool (Windows, käsitsi VMware UI-s) — VM peab olema välja lülitatud (mitte suspendis):

  1. VMware Workstation → vali VM → VM → Settings (Ctrl+D)
  2. Vahekaart Options → vasakult Shared Folders
  3. Parem paneel: Always enabled
  4. Add... → Next → Browse Windowsi kaustale → Name anna ingliskeelne nimi (nt shared või SharedVM, ilma tühikute ja täpitähtedeta) → märgi Enable this shareFinish
  5. OK Settings akna sulgemiseks
  6. Power On VM

2. VM-i pool (Ubuntu, skriptiga):

wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/setup-vmware-shared-folder.sh
chmod +x setup-vmware-shared-folder.sh
bash setup-vmware-shared-folder.sh                 # tuvastab nime automaatselt
# või:
bash setup-vmware-shared-folder.sh SharedVM        # määra nimi käsitsi
Keep awake — Ubuntu/GNOME ja macOS

Test-VM-id ja test-masinad kipuvad ekraanisäästja / sleep'i tõttu hanguma. Skript keelab kõik seotud seaded korraga ja kontrollib tulemused. Platvorm tuvastatakse automaatselt uname -s-iga.

wget https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/keep-awake.sh
chmod +x keep-awake.sh
bash keep-awake.sh

(macOS: curl -O wget-i asemel.)

Linux/GNOME (Ubuntu, Fedora)gsettings, ei vaja sudo-d:

  • org.gnome.desktop.screensaver lock-enabled → false
  • org.gnome.desktop.screensaver idle-activation-enabled → false
  • org.gnome.desktop.session idle-delay → 0
  • org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type → nothing
  • org.gnome.settings-daemon.plugins.power idle-dim → false
  • org.gnome.desktop.screensaver ubuntu-lock-on-suspend → false (Ubuntu-spetsiifiline)

macOSpmset (vajab sudo, küsib parooli) + defaults (ei vaja):

  • pmset -a displaysleep → 0 (ekraan ei lülitu välja)
  • pmset -a sleep → 0 (süsteem ei lähe sleep-i)
  • pmset -a disksleep → 0 (ketas ei lähe spin-down-i)
  • com.apple.screensaver idleTime → 0 (ekraanisäästja off)
  • com.apple.screensaver askForPassword → 0

Ajutiseks ärkvel-hoidmiseks macOS-il (ilma sudo-ta, taustaprotsessiga):

caffeinate -dimsu
Keep awake — Windows 10/11 (ekraan + sleep + ketta spin-down välja)

Windowsi test-masinad/VM-id, mis peavad olema pikka aega aktiivsed ilma kasutaja sekkumiseta. Skript sätib powercfg-iga 0 = mitte kunagi nii ekraanile, süsteemile, kettale kui auto-hibernate'ile.

curl -O https://raw.githubusercontent.com/marge-lab/test-setup-scripts/main/keep-awake.cmd
.\keep-awake.cmd

Topeltkliki .cmd-l võib otse — pärast jooksmist kuvatakse kontroll-tabel ja pause ootab Enter-it.

Seadistab (powercfg /change):

  • monitor-timeout-ac / -dc → 0 (ekraan ei lülitu välja)
  • standby-timeout-ac / -dc → 0 (süsteem ei lähe sleep-i)
  • disk-timeout-ac / -dc → 0 (ketas ei lähe spin-down-i)
  • hibernate-timeout-ac / -dc → 0 (auto-hibernate ei aktiveeru)

JA registry (HKCU, ei vaja admin-õigusi):

  • Control Panel\Desktop\ScreenSaveActive → 0
  • Control Panel\Desktop\ScreenSaverIsSecure → 0
  • Control Panel\Desktop\ScreenSaveTimeOut → 0

Märkused:

  • Hiberneerimise täielikuks välja-lülitamiseks (kustutab hiberfil.sys, vabastab ketast) ava cmd "Run as administrator" ja käivita käsitsi: powercfg /hibernate off
  • Vaikeseadete taastamiseks: Settings → System → Power & battery → Screen and sleep
PuTTY SSH-võtmega ühendus — Windows

Kuidas panna SSH privaatvõti PuTTY-sse, salvestada sessioon ja ühenduda serverisse ilma parooli iga kord sisestamata. Täielik samm-sammuline juhend: putty-ssh-voti.md.

Lühikokkuvõte:

  1. Teisenda võti — PuTTY ei kasuta OpenSSH-võtit (BEGIN OPENSSH PRIVATE KEY) otse. PuTTYgen → Conversions → Import keySave private key (.ppk).
  2. Pane võti sessiooniConnection → SSH → Auth → Credentials → "Private key file for authentication" → vali .ppk.
  3. KasutajanimiConnection → Data → "Auto-login username".
  4. Salvesta sessioonSession lehel host + port 22 → "Saved Sessions" nimi → Save.
  5. Ilma parooli iga kord — käivita Pageant, Add Key.ppk → parool üks kord. Auto-start: Win+Rshell:startup → otsetee pageant.exe "...\minu-voti.ppk".

About

Setup scripts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors