Služby živnostenského v Firefox a/alebo Linux

Skript pre služby živnostensého vo Firefox

Dobrý deň, vyvinul som userscript pre využitie služieb živnostenského v Firefox a na Linuxe.

Pozrieť kód môžete tu: https://github.com/andrewshadura/eid-sk-activex-shim

Momentálne sú podporované formuláre na tejto stránke:

Ako nainštalovať

Nainštalujte Greasemonkey, potom otvorte tento odkaz:

Niečo mi nefunguje

Ak viete odlaďovať JavaScript, rád prijmem pull request. Ak nie, skúste nahlásiť problém, možno ho dokážem vyriešiť

8 Likes

Hodil som si to cez Tampermonkey do Safari a vyskusam teda aj na macOS 10.15.1 (Catalina) a dam vediet.

EDIT: WOW! Funguje to, prave som poslal na ZRSR ohlasenie zivnosti cez Safari (macOS Catalina) a bez pouzitial IE7/ActiveX/Windows-u!!! Toto je velka vec na ktoru som cakal roky a @andrewsh ma u mna velke pivo a a flasku kvalitneho whiskey podla vlastneho vyberu :smiley:

3 Likes

Som rád že to ide :slight_smile:

1 Like

Predpokladám, že sa ten skript dá upraviť pre viacero usecase-ov, napr. priamo na služby MinV ako je centrálna ohlasovňa a pod…Veľká vec!

Zaujímavé je, že na MinV mi ide všetko (v FF/Linux) aj tak; ale keďže nemám slovenské občianstvo, niektoré formuláre (napr. trvalý pobyt) nie sú mi dostupné, a tak neviem ich vyskúšať.

Skús Centrálnu ohlasovňu, zdá sa, že to nejde iba tam, ostatné úkony v pohode :grimacing:

No akurát ona mi nie je dostupná.

Roky prosikania MV a aha aka banalita. Krasna ukazka ako MV kompletne dlabe na pouzivatelov.

4 Likes

z ich pohladu je to optimalna strategia pretoze koncovy zakaznik nema ZIADNY vplyv na ich rozpocet

snazil som sa to pochopit … ale pravdupovediac by som ocenil kratke vysvetlenie. Vidim len volania JS funkcii ulozených na Slovensko.sk. Ale nerozumiem ako dokazu nahradit ActiveX. Budem vdacny za kratke vysvetlenie princípu tohto hacku. Vdaka.

No finta je v tom, že API cez ActiveX malo dve triedy, DSig.XadesSigAtl a DSig.XmlPluginAtl a bolo blokujúce, nové má jeden objekt, ditec.dSigXadesJs, a je neblokujúce a postavené na callbackoch.

V JavaScript v princípe nie je možné spraviť blokujúci kód na základe neblokujúceho. Takže okrem toho, že prispôsobujem pôvodné API na dve triedy novej jednej (API je skoro to isté, len addXmlObject nahradilo pôvodné CreateObject + AddObject), robím celý kód asynchrónnym, takže prepisujem kód pôvodnej funkcii dsignerDoSign tak, aby všetky volania API boli cez await.

Aby sa dalo callbackové API použiť s async/await, funkciou promisify prerábam použité metódy na Promise: vytváram pár callbackov, v ktorých ten Promise „dokončujem“.

Ďalší detail je to, že keď pôvodná funkcia dsignerDoSign vracia true (t.j. podpisovanie je úspešné), celý formulár sa odosiela na server, ktorý vyhodí nový formulár s tlačidlom „Podať“. Keďže nová asynchronná funckcia dsignerDoSign len spúšťa kód „na pozadí“ a hneď vracia Promise (ktorý je ekvivalentný true), formulár sa hneď odošle ešte predtým, ako podpisovanie má šancu sa spustiť, takže hneď po vlastne spúšťaní kódu podpisovania v synchronnom kóde vraciam false, aby sa formulár neodoslal, a potom, keď podpisovanie skončí, odosielam formulár ručne.

Ďalší problém bol, že ak v odoslanom formuláre nie je hodnota tlačidla s <input type="submit">, server nič nespraví. Lenže ak použijem form.submit(), táto hodnota sa tam nepridá, stáva sa to len pri stlačení tlačidla — alebo pri použití requestSubmit, ktoré je také nové, že ešte nie je podporované v Firefox a len nedávno bolo pridané do Chromia. Takže musím znovu použiť hack: nastaviť onclick aby vracal true a nič iné nerobiť, a potom simulovať stlačenie tlačidla :slight_smile:

Posledná finta je to, že skripty Greasemonkey bežia v samostatnom „pieskovisku“, tak aby som mohol injektovať funkcie do objektu window, musím všetko zabaliť do window.eval.

3 Likes

Takže nie som sám čo si toto všimol :smiley:
Akurát som sa snažil založiť živnosť, pričom som si nemyslel, že to bude problém, lebo predtým mi na portále finančnej správy podpisovanie fungovalo. Pozrem na tú funkciu dsignerDoSign() a tam activex :rofl:

Ešteže som sa šiel pozrieť najskôr sem a ušetril si čas. Ale keď som si otvoril dev konzolu na finančnej správe, tak som sa aspoň dobre pobavil. Nazvať funkciu HasGoodPodTyp alebo addPriloha sa len tak nevidí :smiley: