GPAIS integracija
Labai trūksta dokumentacijos apie GPAIS VVS sąsajos integravimą. Aprašysiu problemas, su kuriomis susidūriau:
Rakto generavimas
Sugeneruoto rakto nepriima nei openssl, nei putty. Problemą pavyko išspręsti id_rsa failą pakeičiant ir pridedant po eilutę viršuje ir apačioje:
-----BEGIN RSA PRIVATE KEY----- MIIE... (esamas raktas) -----END RSA PRIVATE KEY-----
Slaptažodžio generavimas
Instrukcijoje rašoma, kad REST prieigos slaptažodis turi būti “užkoduotas vartojo parašo asmeniniu raktu” - turi būti ne užkoduotas, o pasirašytas. Tam galima naudoti komandą:
openssl rsautl -sign -inkey id_rsa -out >(base64 -w 0)
Base64 komanda standartiškai prideda naujų eilučių simbolius, kurių GPAIS sistema nepriima, todėl juos reikia išvalyti - tam naudojam -w 0 parametrą.
Toliau generuojame neapdorotą slaptažodį. Jis susideda iš įmonės kodo ir dabartinio laiko milisekundėmis. Laiką milisekundėmis gauname taip:
date +%s%N | cut -b1-13
Taigi, visa komanda slaptažodžiui sugeneruoti gaunasi tokia:
echo -n "123456789|`date +%s%N | cut -b1-13`" | openssl rsautl -sign -inkey id_rsa -out >(base64 -w 0)
Vėlgi, standartinis echo eilutės gale prideda “newline” simbolį, kurio GPAIS nepriima - jį numetame su -n parametru.
Duomenų įkėlimas su CURL
Na ir galiausiai viską įkeliame su CURL. Jei įkėlimas automatizuojamas ir slaptažodį paduosite CURL automatiškai, atkreipkite dėmesį, kad --user parametras priima tik pirmus 63 simbolius; reikia viską dar kartą užkoduoti su base64 ir paduoti kaip paprastą header’į:
date=$(date +%s%N | cut -b1-13) pass=$(echo -n "123456789|${date}" | openssl rsautl -sign -inkey id_rsa -out >(base64 -w 0)) auth="Basic $(base64 -w 0 <<< "username:$pass")" curl -v -F [email protected] https://www.gpais.eu/o/vvs/zrn/journal/import -H "authorization: ${auth}"
Žinoma, pavyzdyje reikia pasikeisti įmonės kodą (123456789) ir vartotojo vardą (username).












