Skaner adresów IP online JS/HTML

Skaner adresów IP online JS/HTML
Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Integracja konsoli screenshot-20260519222353.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Jeszcze nie ma się czym chwalić ale stworzyłem relase jak ktoś chciał by sobie poklikać o zobaczyć jak działa nowe UI
https://github.com/michalstankiewicz4-cell/IPscanner/releases/tag/demo-new-ui-20260520-175651

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Integracja z konsolą! teraz wszystkie przyciski wywołują komendy z konsoli
screenshot-20260520205047.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

@obscurity Dzięki za zgłoszenie błedu, zrobiłem paczkę instalatora online który rozwiązuje ten problem. Niestety zrobienie aplikacji exe (portable) która ten problem rozwiąże jest chyba niemożliwe bo WV2 to składnik systemu.

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
1
MichałS napisał(a):

@obscurity Dzięki za zgłoszenie błedu, zrobiłem paczkę instalatora online który rozwiązuje ten problem. Niestety zrobienie aplikacji exe (portable) która ten problem rozwiąże jest chyba niemożliwe bo WV2 to składnik systemu.

nie no na stronie https://developer.microsoft.com/en-us/microsoft-edge/webview2?form=MA13LH#download masz normalnie po prawej paczkę do dołączenia do aplikacji, z tego co widzę wystarczy rozpakować do folderu z aplikacją i ewentualnie wskazać ścieżkę w CreateCoreWebView2EnvironmentWithOptions

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Ostateczna nazwa "OSINT NET Auditor" chyba :P Droga przez którą przeszedł to:

  • Chaos okienkowy zawalony narzędziami w którym ciężko się odnaleźć
  • Ułożony zestaw narzędzi o UI inspirowanym Discordem / Visual Studio Code z integracją z Power Shell
  • I trzeci etap: zastanawiam się nad nim, nie jestem pewien czy w niego wchodzić.
    Tryb pseudo tekstowy zintegrowany z PS, który nie ma rozpraszających elementów graficznych podobny do starego DOS-owego NortonCommandera. żadnych wodotrysków, czyste dane tekstowe, poukładane w stylu który nie kłuje w oczy 😅 czyli użytkownik wchodzi, robi swoje i zamyka aplikację.

Wiem, że miałem zrobić wszystkie 3 i ostatecznie pewnie tak się stanie ale od którego zacząć? 🤔
założyłem stronę FB projektu: https://www.facebook.com/OSINTNETAuditor

Moje przemyślenia są takie, jeżeli użytkownik będzie chciał używać narzędzi tj skanowanie ip, sniffer etc. wtedy tekstowy. W przypadku funkcji OSINT - UI etapu nr 2 🤔

702516216_10230769320272389_3870263489999860345_n.jpg

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

@obscurity Zrobiłem w instalatorze możliwość wybrania i doinstalowania składników wymaganych do działania programu (na razie jest to tylko 1 składnik WV2) dodałem też przycisk autodetekcji, który sam zaznacza składniki wymagane. Dziękuję za uwage, dzięki tobie to spory krok na przód ❤️

Dodałem też folder z nowym UI jak ktoś ma opory przed instalowaniem supernowoczesnego, bezpiecznego oprogramowania tworzonego przez specjalistę z wieloletnim doświadczeniem 😅 https://ipscanner.pl/OSINTNETAuditor/

screenshot-20260521174406.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

UI otrzymało usprawnienia tab->win, win->tab
screenshot-20260523163955.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

VibeCoding nie do końca zrobi wszystko za nas przy bezmyślnym kopiowaniu i wklejaniu wyników promptów.
I co ja niby mam zrobić z tą ścianą tekstu, jeżeli prawie nic nie rozumiem 😅
Mam wrażenie, że to wszystko zdetonuje mój projekt zje mi wszystkie tokeny i skończę z backupem

Prompt:
"Proszę o plan tak aby uruchamiając wersję html była większa szansa, że exe też zadziała"
Odp:
Świetny kierunek. Największą skuteczność daje podejście: HTML jako środowisko deweloperskie, ale z wymuszoną „symulacją desktop”, żeby wcześnie łapać różnice.

Plan 90/10 (żeby HTML przewidywał EXE)

Ustal jeden wspólny core UI i logiki
Zero duplikacji kodu między web i desktop.
Różnice tylko w cienkiej warstwie adapterów runtime.
Wprowadź adapter platformy
Jeden interfejs, np. platform API: okno, storage, shell, clipboard, file dialogs.
Dwie implementacje: web adapter i tauri adapter.
Kod aplikacji woła tylko interfejs, nigdy bezpośrednio window.TAURI.
Dodaj Desktop Parity Mode w wersji HTML
Flaga uruchomienia, która emuluje ograniczenia desktop.
W tym trybie:
blokujesz zewnętrzne fonty i zasoby,

włączasz restrykcyjny CSP jak w Tauri,

symulujesz brak wybranych API/permissionów,

testujesz zachowanie offline.

Ujednolić CSP i zasoby statyczne

Zasada: wszystko krytyczne lokalnie (fonty, ikony, skrypty).
Nie polegać na CDN dla elementów wpływających na layout/start aplikacji.
HTML w dev powinien ładować te same assety co build desktop.
Wydzielić funkcje „sieciowe” i dać im fallback UX
Każdy moduł zależny od internetu ma:
timeout,
obsługę błędu,
czytelny komunikat i stan degradacji.
Dzięki temu EXE offline nie wygląda jak „zepsute”.
Kontrakt testów na poziomie funkcji
Te same testy jednostkowe dla core logiki odpalane niezależnie od runtime.
Testy kontraktowe adapterów: ta sama metoda, te same wejścia/wyjścia, różna implementacja.
Smoke test matrix po każdej większej zmianie
Web normal.
Web Desktop Parity Mode.
EXE no-bundle.
Minimalny zestaw scenariuszy: start, nawigacja, auto-arrange, resize, storage, moduły sieciowe.
Bramka jakości przed merge
PR przechodzi dopiero gdy:
smoke web + parity zielone,

smoke EXE zielone,

brak hardcoded tekstów poza i18n,

brak nowych zewnętrznych zależności runtime bez uzasadnienia.

Telemetria debugowa tylko dla dev/test

Lekki logger zdarzeń krytycznych (window actions, adapter errors, network failures).
To skraca czas znajdowania „działa w HTML, nie działa w EXE”.
Definicja ukończenia funkcji
Każda nowa funkcja musi mieć:
implementację przez adapter,
fallback web/desktop,
test kontraktowy,
scenariusz smoke.
Minimalny rollout w 3 sprintach

Sprint 1: adapter platformy + odcięcie bezpośrednich wywołań Tauri.
Sprint 2: Desktop Parity Mode + CSP/assets lokalne.
Sprint 3: smoke matrix + quality gate w workflow.
Jeśli chcesz, następny krok mogę zrobić od razu praktycznie: przygotuję konkretną checklistę PR do Twojego repo i mapę „co przenieść do adaptera najpierw”, żeby dało się wdrażać to stopniowo bez zatrzymania prac.

...edit...
Wydaje mi się, że jednak będę musiał przez to przejść :(

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Wszedłem w to, nie wiem czy dobrze zrobiłem, po prostu muszę uwierzyć na słowo, że to pomogło w czymkolwiek 😅 Przepaliłem trochę tokenów (jakieś 6-7% w skali copilota w VSCode)
screenshot-20260528060206.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

Nowe UI chyba już zrobione, w ostatnim etapie dodałem animowane loadery w miejscach na dane i w pasku informacyjnym oraz informację ile "procesów" wykonuje się w tle.
Na górnym pasku znajduje się uniwersalny przycisk który układa okna w zależności od ich ilości czyli:
1 okno - cały ekran
2 okna - obok siebie a kolejne kliknięcie jedno pod drugim
3 okna - po lewej 1 po prawej 2 a kolejne kliknięcie zamienia strony
4 okna - 2 kolumny i 2 wiersze
5 i więcej okien - układa 1 za drugim rozkładając od lewego górnego rogu do prawego dolnego.
Każde okno ma przycisk dzięki któremu można podmienić okna gdy u ich kolejność nam nie odpowiada
Teraz zabieram się za wypełnianie zawartości. Skaner IP zrobiony w ~50%
screenshot-20260603154212.png
screenshot-20260603154606.png
screenshot-20260603155308.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Musiałem usunąć relase bo exe sprawiał problem instalator też -_-
ale wszystko na dobrej drodze :)

bakunet
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 1764
0

Ciekawy pomysł na projekt. Skąd pomysł na niego? Do czego go używasz?

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

A w przyszłości tak dla zabawy będę chciał dla siebie zrobić wersję bigbox :D
screenshot-20260605154719.png
screenshot-20260605155552.png
screenshot-20260605155038.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

Plan na najbliższe update-y (kolejność dowolna)

  • Usunąć kilka błędów (ponieważ skrypty ps1 umieściłem w oddzielnych plikach program ich nie widzi)
  • Dokopać się do źródła problemu z paskiem przewijania zawartości okna (scrollbar)
  • Dopracować UX
  • Zarządzanie danymi z zakładki results: import/export/clear
  • Dodać w każdej zakładce z inputami reset to default
  • Upodobnić prawy panel do lewego (tryb zakładek)
  • Wbudować skaner IPv6
  • Dokończyć topologię i globus
  • Przy wyjściu z projektu zapamiętywanie otwartych zakładek i szerokości sekcji
  • Włączyć pełną funkcjonalność menu File (działa tylko Exit)
  • Dodać zakładkę z ustawieniami UI kolory czcionki itp
  • Dodać możliwość wyłączenia/ukrycia niepotrzebnych rzeczy (gdy ktoś używa programu tylko do skanowania LAN będzie można wyłączyć/ukryć niepotrzebne rzeczy
  • Aktywować makra
  • Zrobić podstawowy tryb "programowania" blokowo węzłowego na makrach i skryptach .ps1
  • Dodać przełącznik HTML/APP lub zrobić to jakoś automatycznie aby działały obydwie wersje
Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

Przymiarki do stworzenia blokowo‑węzłowej architektury operacyjnej aplikacji. Hmmm... takie podejście eliminuje całkowicie śmietnik okienkowy i działam tylko na jednym canvasie. Jak bym miał znowu zmieniać UI to chyba bym się zastrzelił xd

Wydaje mi się, że w końcu znalazłem pomysł na który jeszcze nikt nie wpadł, stworzyć system blokowo węzłowy dla konsoli PowerSshell :P. Zawsze miałem problemy ze zrozumieniem tego czegoś.

screenshot-20260607190705.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Bez pomocy utknę w pętli swoich pomysłów 😅
screenshot-20260608165741.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

-> "ShellCraft"
Przemyślenia:
Coraz bardziej czuję, że czas na nowy start projektu, taki prawdziwy restart ostateczny który podpowiada mi intuicja, a nie tylko kosmetyczne poprawki.
I wygląda na to, że najlepszą drogą będzie skupienie się najpierw na integracji konsoli PowerShell z systemem blokowo‑węzłowym, to właśnie ta ostatnia koncepcja z grafiki, powinna stać się fundamentem całego projektu.

Roboczo nazwijmy ten moduł "ShellCraft"

To będzie warstwa która:

  • łączy klasyczną konsolę z node‑based UI
  • pozwala zamieniać bloki na komendy i być może odwrotnie
  • umożliwia wizualne pipeline’y
  • stanie się sercem całego systemu 🫀

Na bazie "ShellCraft" powstanie właściwy interfejs użytkownika oznaczony na obrazku jako "Im Here" czyli pełne UI OSINT‑kombajnu a UI będzie tylko naturalnym rozwinięciem tego, co już działa pod spodem.

To już 3 restart projektu 😅 (oby ostatni) 🙃
screenshot-20260608191944.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Mam pewne przemyślenia dotyczące projektu, czy powinienem się czymś martwić?

Zagadnienia prawne dotyczące projektu. Czyli temat z którym być może prędzej czy później będę musiał się zmierzyć
Nie ukrywam się z tym, że UI projektu jest mocno inspirowane na VS Code. Należało by więc wskazać podobieństwa i różnice:
Podobieństwa:

  • Rozłożenie i częściowe zastosowanie sekcji (i wydaje mi się, że tu kończą się podobieństwa)
    • Menu górne jako główna belka programu
    • Dolna belka in formacyjna
    • Sekcje lewa i prawa (prawa z asystentem AI)
    • Sekcja centralna z zakładkami
    • Sekcja dolna z konsolą, terminalem
  • Układ sekcji

Jest kilka innych programów które używają podobnego układu, najczęściej te online przez www ale są i aplikacje np: Discord

Podobieństwa drobniejsze, które można łatwo zmienić

  • Paleta kolorów jest identyczna ale odcienie są inne pomimo, że nadal są to odcienie szarości
  • Akcenty aktywnych funkcji/zakładek w postaci "kreski"

Różnice

  • Kod (myślę, że podobieństwa nie istnieją ale to tylko moje przypuszczenia. Jeżeli AI w jakiś sposób miał dostęp do "kodu VS Code" to nie wykluczone że podobieństwa są :D ) mój jest w JS
  • Zakładki w panelu centralnym posiadają możliwość przekształcenia je w okna które można dowolnie sortować i układać
  • Funkcjonalność programu (jest zupełnie inna wręcz 100% inna)
  • VS Code posiada w swoim stylu pewne zaokrąglenia w wielu miejscach np w menu (które w/g mnie odejmują mu charakteru i jest niespójny wizualnie)
  • Panel lewy i prawy u mnie posiada system zakładek
  • Inny loader
  • Dolna belka informacyjna - ze względu na inny rodzaj programu wskazuje zupełnie inne informacje (cały czas widoczne są: loader, ilość zadań oraz pasek ładowania)
  • Akcenty aktywnych funkcji/zakładek
  • Czcionka
  • Obiektywnie 😅 lepsze zwianie sekcji (przyciskami na UI widocznymi przy każdej)
  • Inny wygląd ikon (u mnie kolorowe emotki, w VSC są w odcieniach szarości)
  • cieniowanie okien i menu
  • W przypadku dużej ilości zakładek w panelu centralnym pojawiają sie ikonki przewijania
    W przyszłości zamierzam wprowadzić filtr koloru na ikonki w lewym panelu

Dodatkowe potencjalne problemy

  • Pomocnik w postaci EmoPomocnika
    Microsoft to: "Clippie" z serią animacji
    OSINT NET Auditor: "EmoHelper" Emotikon z jedną animacją bujania się w trakcie mówienia i mrugającymi oczami ale chcę mu wydłubać jedno oko i zrobić opaskę pirata. Ma inne oczy, brwi i brak cieniowania.
    zupełnie inny sposób rysowania
    W przyszłości prawdopodobnie zastąpię go małżą 😅 bo "ShellCraft" - shell - muszle

Nie wiem, czy warto wspomnieć, że mój program jest MIT 100% darmowy

screenshot-20260612165520.pngscreenshot-20260612171042.png
screenshot-20260612164632.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Pytanie:
Import pliku z innej sesji - skaner IP
Zastanawiam się czy dać taką opcję i jak to ogarnąć.
Ktoś może działać na 2 komputerach lub chciał by zaimportować wyniki skanowania innego kolegi.
każdy rekord chyba opatrzeć datą i godziną skanowania oraz nadać indywidualne ID przy imporcie
Gdy daty się pokrywają a wyniki skanowania są różne to oczywiste, że importujemy.
Co w przypadku gdy daty są różna a IP jest identyczne oraz pozostałe dane dotyczące adresu są identyczne? Pomijać? a może oznaczać i dać użytkownikowi do wyboru przykładowo oznaczając?
Co w przypadku gdy daty są różna a IP jest identyczne i inne się zgadzają ale jedna jest inna np nazwa hosta lub port zamknięty czy cokolwiek?

Chyba przydała by się wiedza z zakresu baz danych 😅

Nie wiem co o tym myśleć... pomocy :)

screenshot-20260705072556.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

Szwajcarski scyzoryk OSINT otrzymał upgrade w postaci możliwości ładowania/zapisywania/czyszczenia(tworzenia nowej sesji) zapisywane są wyniki wszystkich działań oraz otwarte zakładki w panelach lewym, prawym i centralnym.
Jeszcze go nie udostępniam bo muszę zrobić porządki po dziesiątkach promptów w których Claude mnie nie chciał zrozumieć :P

screenshot-20260706160748.png
screenshot-20260706161134.png

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
1
MichałS napisał(a):

Ktoś może działać na 2 komputerach lub chciał by zaimportować wyniki skanowania innego kolegi.

raczej nie

Co w przypadku gdy daty są różna a IP jest identyczne oraz pozostałe dane dotyczące adresu są identyczne? Pomijać? a może oznaczać i dać użytkownikowi do wyboru przykładowo oznaczając?

nie ma znaczenia

Co w przypadku gdy daty są różna a IP jest identyczne i inne się zgadzają ale jedna jest inna np nazwa hosta lub port zamknięty czy cokolwiek?

LWW (Last-Write-Wins)

kimikini
  • Rejestracja: dni
  • Ostatnio: dni
1

@MichałS sporo tworzysz, myslales zeby swoje projekty jakos monetyzowac?

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Przepraszamy za czas oczekiwania na nowe narzędzia
Najpierw musi dojechać skaner bez wysypów, potem ruszy transformacja architektury. Refaktor stoi grzecznie z boku i czeka na swoją kolejkę numerkową, bo wpuszczenie go za wcześnie skończyłoby się zabetonowaniem dzisiejszych błędów w fundamentach na lata. Powłoka też cierpliwie czeka, bez pretensji.
Kolejny replan 😅 czyli NeverEnding Story

Skroty

  • TBM — Top Bar Menu
  • LSB — Left Shortcut Bar (activity bar, ikony)
  • LS — Left Section (panel boczny)
  • RS — Right Section
  • CS — Central Section
  • DS — Down Section (terminal/macro/console)
  • DSB — Down Status Bar
  • ST — Sub-Tool (litery a/b/c pod numerowanym Tool = jego sub-tools)

DS (panel terminala) i DSB (pasek statusu) to CELOWO dwie rozne rzeczy mimo
podobnego skrotu — latwo je pomylic przy szybkim czytaniu, stad to zaznaczenie.

Notacja dostep/miejsce

Format: (dostep -> miejsce).

  • "dostep" = skad mozna to otworzyc (LSB, TBM - Tools, TBM - Options...). Moze byc
    wiecej niz jedno miejsce dostepu naraz, wtedy rozdzielone przecinkiem.
  • "miejsce" = gdzie sie to faktycznie otwiera (LS/RS/CS). Jesli narzedzie otwiera
    wiecej niz jedna zakladke w roznych miejscach, kazda dostaje wlasna linie.

Przyklad:

Kopiuj
IP Scanner (LSB, TBM-Tools -> LS)
  - wynik otwiera sie osobno: (-> CS, jako "IP Results")

Shell

  1. Top Bar Menu
    a. Logo — logo + tooltip z nazwa + aktualna wersja.
    b. Menu:
    • File: save, save as, load, close, import (mock — jeszcze bez dzialajacej logiki), exit
    • Options: language, import tools
    • Tools: ShellCraft, AI Assistant
    • Help: version, download, about, license, assistant
      c. Przyciski: zamykanie, zarzadzanie ukladem okien, ukrywanie wrazliwych danych, full reset.
  2. Left Section (LS)
  3. Right Section (RS)
    a. AI Assistant (dostep: LSB, TBM-Tools -> otwiera sie w: RS)
  4. Center Section (CS)
    a. logo w tle
    b. ladowanie ostatnich sesji (widok powitalny "Recent sessions")
  5. Down Section (DS)
    a. Terminal
    b. Macro
    c. Console PowerShell
  6. Down Status Bar (DSB)
    a. loader
    b. ilosc aktywnych procesow
    c. pasek ladowania 0-100%
    d. dodatkowe miejsce na informacje
  7. Left Shortcut Bar (LSB)
    a. pierwsza ikona zawsze wskazuje dane do zapisywania sesji (Result Data List)
    b. pozostale ikony to skroty do narzedzi z listy ## Tools ponizej

LS, RS, CS powinny miec identyczny system zakladek (parytet tab/window, patrz
CONTRIBUTING.md §3a).

Tools

  1. IP Scanner (LSB, TBM-Tools -> LS)
    • wynik -> CS, jako "IP Results"
    • ST a. Port Presets (TBM-Options -> CS, jako "Presets")
    • ST b. Default Scan Values (TBM-Options -> CS, jako "Scan Values")
  2. Country IP Library (TBM-Options)
    • edytor -> LS, jako "IP Library (edytor)"
    • podglad -> CS, jako "IP Library (widok)"
  3. Topology Map (LSB, TBM-Options -> CS)
  4. World Globe (LSB, TBM-Options -> CS)
  5. Shell Craft (TBM-Tools)
    • ST a. Library -> LS
    • ST b. Inspector -> LS
    • glowny widok -> CS
Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Jako aspirujący twórca o wątpliwej reputacji technicznej postanowiłem narysować sobie schemat aplikacji, żeby w bardziej ogarnąć, co tu właściwie robię.
Jestem ciekaw, co o tym myślicie, poza klasycznym "idź się lepiej poucz" 😅
Ten fioletowy trójkąt pokazuje obszar którego nie ogarniam i chyba nigdy już nie ogarnę (no chyba, że teoretycznie)
Lewa stona zielonej linii pokazuje miejsce w którym obecnie jestem. (tak to sobie wizualizuję w głowie)
Może jakieś materiały online polecicie? (bardziej ogólne niż szczegółowe) :)

Jeszcze jedno pytanie, które rzeczy z backendu powinny być w dodatku a które w shell-u

screenshot-20260708133612.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
1

Pozbywam się sentymentów które tylko spowalniały pracę to ostatni screen z dual UI
Aktualnie pracuję tylko nad wersją inspirowaną VS Code
screenshot-20260708135716.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Idę w stronę Command Bus / WASM. Aktualny stan prac to:
Ekstrakcja IP-Skanera do zewnętrznego pliku
Pozostanie jedynie GUI w którym będzie można instalować dodatki, tak jak w VS Code ❤️
Coraz głębiej w króliczą norę. Po raz kolejny obiecuje, że to ostatni restart 😅

Testowo udało mi się zainstalować/odinstalować dodatek, który poprosił o uprawnienia do konsoli PS, utworzył skrót na w lewej sekcji ikon, głównym menu oraz, otwiera zakładki w każdej z trzech sekcji w tym jednej z przyciskiem do funkcji wykrywającej adres IP, który jest wyświetlany w drugiej zakładce uff
Ale! To nie jest jeszcze prawdziwy Command Bus / WASM

To mały krok dla vibecodera...
Small step for vibecoder...

screenshot-20260708181240.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

To wstęp do integracji WASM oraz zarządzania dodatkami w shellu i GUI.
Na ekranie widoczna jest lista aktualnych rozszerzeń powiązanych z moim profilem GitHub ale równie dobrze można je wczytać z lokalnego pliku na dysku.
Obecna wersja programu potrafi:
Wykrywać dodatki, zarówno z GH, jak i z plików lokalnych.
Wyświetlać ich listę, w czytelnej formie z ikonkami, gotowej do dalszej interakcji.
Instalować i odinstalowywać dodatki pozwalając użytkownikowi nimi szybko zarządzać.

Na tym etapie nie jest to jeszcze pełnoprawny system WASM, logika opiera się głównie na JSON-ach opisujących dodatki.
Docelowo moduł będzie rozszerzony o:

automatyczne wykrywanie wersji,
obsługę aktualizacji i migracji,
oraz pełną integrację z WASM, gdzie dodatki będą realnymi modułami wykonywalnymi.

Kod na GH a podgląd na www.ipscanner.pl

Przed:
screenshot-20260708210343.png

Po:
screenshot-20260708210308.png

UI:
screenshot-20260708205239.png

Na to nie zwracajcie uwagi 😅 zaraz naprawię
screenshot-20260708210630.png

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Ekchm.. chciałem przedstawić najmniejszy na świecie, bez programowy, jednolinkowy, nano Skaner Adresów IP
Jak działa:
Po uruchomieniu klikasz "Sprawdź adres zewnętrzny"
Gdy adres się pojawi klikasz "Start"
Czekasz aż tabela się wypełni
UWAGA Skaner skanuje cały ostatni oktet (255 adresów) z 700 delay
Pojawią się tylko IP które są onlina na danych portach

screenshot-20260709040414.png

To już ostatni obiecuję 😅

data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9InBsIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+TkFOTyDigJQgbWluaSBza2FuZXIgSVA8L3RpdGxlPgo8c3R5bGU+CiAgOnJvb3R7CiAgICAtLWJnOiMwZDExMTQ7CiAgICAtLXBhbmVsOiMxNDFhMWU7CiAgICAtLXBhbmVsLTI6IzE4MWYyNDsKICAgIC0tbGluZTojMjMyYjMwOwogICAgLS10ZXh0OiNkYmU0ZTY7CiAgICAtLWRpbTojN2M4YjkxOwogICAgLS1hY2NlbnQ6IzRmZDFjNTsKICAgIC0tYWNjZW50LWRpbTojMmM3ZDc2OwogICAgLS13YXJuOiNlOGEzM2Q7CiAgICAtLWJhZDojZTA1YzVjOwogICAgLS1tb25vOiB1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgIkNhc2NhZGlhIE1vbm8iLCAiSmV0QnJhaW5zIE1vbm8iLCBDb25zb2xhcywgbW9ub3NwYWNlOwogIH0KICAqe2JveC1zaXppbmc6Ym9yZGVyLWJveDt9CiAgYm9keXsKICAgIG1hcmdpbjowOyBwYWRkaW5nOjI0cHg7IGJhY2tncm91bmQ6dmFyKC0tYmcpOyBjb2xvcjp2YXIoLS10ZXh0KTsKICAgIGZvbnQtZmFtaWx5OnZhcigtLW1vbm8pOyBmb250LXNpemU6MTNweDsgbGluZS1oZWlnaHQ6MS41OwogIH0KICAud3JhcHttYXgtd2lkdGg6OTAwcHg7IG1hcmdpbjowIGF1dG87fQogIGhlYWRlcntkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmJhc2VsaW5lOyBnYXA6MTBweDsgbWFyZ2luLWJvdHRvbToxOHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgcGFkZGluZy1ib3R0b206MTJweDt9CiAgaGVhZGVyIC5kb3R7d2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpOyBib3gtc2hhZG93OjAgMCA4cHggdmFyKC0tYWNjZW50KTt9CiAgaGVhZGVyIGgxe2ZvbnQtc2l6ZToxNXB4OyBsZXR0ZXItc3BhY2luZzouMTJlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBtYXJnaW46MDsgZm9udC13ZWlnaHQ6NjAwO30KICBoZWFkZXIgLnN1Yntjb2xvcjp2YXIoLS1kaW0pOyBmb250LXNpemU6MTFweDt9CgogIC5wYW5lbHtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgYm9yZGVyLXJhZGl1czo2cHg7IHBhZGRpbmc6MTRweCAxNnB4OyBtYXJnaW4tYm90dG9tOjE0cHg7fQogIC5wYW5lbCArIC5wYW5lbHttYXJnaW4tdG9wOjE0cHg7fQogIC5yb3d7ZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmbGV4LXdyYXA6d3JhcDt9CiAgLmxhYmVse2NvbG9yOnZhcigtLWRpbSk7IGZvbnQtc2l6ZToxMXB4OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBtaW4td2lkdGg6YXV0bzt9CgogIGJ1dHRvbnsKICAgIGZvbnQtZmFtaWx5OnZhcigtLW1vbm8pOyBmb250LXNpemU6MTJweDsgbGV0dGVyLXNwYWNpbmc6LjAzZW07CiAgICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLTIpOyBjb2xvcjp2YXIoLS10ZXh0KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjhweCAxNHB4OyBjdXJzb3I6cG9pbnRlcjsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cywgY29sb3IgLjE1czsKICB9CiAgYnV0dG9uOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1hY2NlbnQpOyBjb2xvcjp2YXIoLS1hY2NlbnQpO30KICBidXR0b246YWN0aXZle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDFweCk7fQogIGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tYWNjZW50LWRpbSk7IGJvcmRlci1jb2xvcjp2YXIoLS1hY2NlbnQpOyBjb2xvcjojZWFmZmZiO30KICBidXR0b24ucHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7IGNvbG9yOiMwNjI0MjE7fQogIGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi40OyBjdXJzb3I6bm90LWFsbG93ZWQ7fQogIGJ1dHRvbi5zbWFsbHtwYWRkaW5nOjVweCAxMHB4OyBmb250LXNpemU6MTFweDt9CgogIGlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9bnVtYmVyXXsKICAgIGZvbnQtZmFtaWx5OnZhcigtLW1vbm8pOyBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLTIpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBjb2xvcjp2YXIoLS10ZXh0KTsKICAgIGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjdweCA5cHg7IGZvbnQtc2l6ZToxMnB4OwogIH0KICBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLCBpbnB1dFt0eXBlPW51bWJlcl06Zm9jdXN7b3V0bGluZTpub25lOyBib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KTt9CiAgLmNpZHItdGFne2NvbG9yOnZhcigtLWRpbSk7IGZvbnQtc2l6ZToxMXB4OyBib3JkZXI6MXB4IGRhc2hlZCB2YXIoLS1saW5lKTsgcGFkZGluZzozcHggN3B4OyBib3JkZXItcmFkaXVzOjRweDt9CgogIC5wb3J0c3tkaXNwbGF5OmZsZXg7IGdhcDo0cHg7IGZsZXgtd3JhcDp3cmFwOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjZweDsgcGFkZGluZzoxMHB4IDEycHg7IGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtMik7fQogIC5wb3J0LWNoaXB7ZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo1cHg7IHBhZGRpbmc6NXB4IDlweDsgYm9yZGVyLXJhZGl1czo0cHg7IGN1cnNvcjpwb2ludGVyOyBmb250LXNpemU6MTFweDsgY29sb3I6dmFyKC0tZGltKTsgdXNlci1zZWxlY3Q6bm9uZTt9CiAgLnBvcnQtY2hpcCBpbnB1dHthY2NlbnQtY29sb3I6dmFyKC0tYWNjZW50KTt9CiAgLnBvcnQtY2hpcC5jaGVja2Vke2NvbG9yOnZhcigtLWFjY2VudCk7fQoKICAjZXh0UmVzdWx0e2NvbG9yOnZhcigtLWFjY2VudCk7IGZvbnQtd2VpZ2h0OjYwMDsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IGZvbnQtZmFtaWx5OnZhcigtLW1vbm8pOyBmb250LXNpemU6MTNweDsgd2lkdGg6MTQwcHg7IHBhZGRpbmc6MnB4IDA7fQogICNleHRSZXN1bHQuZW1wdHl7Y29sb3I6dmFyKC0tZGltKTsgZm9udC13ZWlnaHQ6NDAwO30KICAjZXh0UmVzdWx0OmZvY3Vze291dGxpbmU6MXB4IGRhc2hlZCB2YXIoLS1hY2NlbnQtZGltKTt9CgogIC5zcGlubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxMHB4OyBoZWlnaHQ6MTBweDsgYm9yZGVyLXJhZGl1czo1MCU7CiAgICBib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjI1KTsgYm9yZGVyLXRvcC1jb2xvcjpjdXJyZW50Q29sb3I7CiAgICBhbmltYXRpb246c3BpbiAuNnMgbGluZWFyIGluZmluaXRlOyBtYXJnaW4tcmlnaHQ6N3B4OyB2ZXJ0aWNhbC1hbGlnbjotMXB4O30KICBAa2V5ZnJhbWVzIHNwaW57IHRveyB0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfQoKICB0YWJsZXt3aWR0aDoxMDAlOyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IGZvbnQtc2l6ZToxMnB4O30KICB0aGVhZCB0aHt0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOnZhcigtLWRpbSk7IGZvbnQtd2VpZ2h0OjUwMDsgZm9udC1zaXplOjExcHg7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOi4wNmVtOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgcGFkZGluZzo2cHggOHB4O30KICB0Ym9keSB0ci5ob3N0LXJvd3tjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7fQogIHRib2R5IHRyLmhvc3Qtcm93OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tcGFuZWwtMik7fQogIHRib2R5IHRke3BhZGRpbmc6N3B4IDhweDsgdmVydGljYWwtYWxpZ246bWlkZGxlO30KICAuaXAtY2VsbHtjb2xvcjp2YXIoLS10ZXh0KTsgZm9udC13ZWlnaHQ6NjAwO30KICAuY2FyZXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7IHdpZHRoOjEwcHg7IGNvbG9yOnZhcigtLWRpbSk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4xNXM7fQogIC5jYXJldC5vcGVue3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOyBjb2xvcjp2YXIoLS1hY2NlbnQpO30KICAuYmFkZ2V7cGFkZGluZzoycHggN3B4OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEwcHg7IGxldHRlci1zcGFjaW5nOi4wNGVtO30KICAuYmFkZ2UudXB7YmFja2dyb3VuZDpyZ2JhKDc5LDIwOSwxOTcsLjEyKTsgY29sb3I6dmFyKC0tYWNjZW50KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1hY2NlbnQtZGltKTt9CiAgLmJhZGdlLmRvd257YmFja2dyb3VuZDpyZ2JhKDIyNCw5Miw5MiwuMDgpOyBjb2xvcjp2YXIoLS1iYWQpOyBib3JkZXI6MXB4IHNvbGlkICM0YTIzMjM7fQogIC5waW5nLXZhbHtjb2xvcjp2YXIoLS1kaW0pO30KICAucGluZy12YWwuZmFzdHtjb2xvcjp2YXIoLS1hY2NlbnQpO30KCiAgLmRldGFpbC1yb3cgdGR7YmFja2dyb3VuZDp2YXIoLS1wYW5lbC0yKTsgcGFkZGluZzowO30KICAuZGV0YWlsLWlubmVye3BhZGRpbmc6OHB4IDhweCAxMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDo4cHg7fQogIC5wb3J0LXJlc3VsdHtkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjJweDsgYmFja2dyb3VuZDp2YXIoLS1wYW5lbCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzo2cHggMTBweDsgbWluLXdpZHRoOjgwcHg7fQogIC5wb3J0LXJlc3VsdCAucHtmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBmb250LXNpemU6MTJweDt9CiAgLnBvcnQtcmVzdWx0IC5ze2ZvbnQtc2l6ZToxMHB4OyBsZXR0ZXItc3BhY2luZzouMDNlbTt9CiAgLnBvcnQtcmVzdWx0Lm9wZW4gLnN7Y29sb3I6dmFyKC0tYWNjZW50KTt9CiAgLnBvcnQtcmVzdWx0LmNsb3NlZCAuc3tjb2xvcjp2YXIoLS1kaW0pO30KCiAgLmVtcHR5LXN0YXRle2NvbG9yOnZhcigtLWRpbSk7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjMwcHggMDsgZm9udC1zaXplOjEycHg7fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJ3cmFwIj4KCiAgPCEtLSBTdGVyb3dhbmllIHNrYW5lbSAtLT4KICA8ZGl2IGNsYXNzPSJwYW5lbCI+CiAgICA8ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJtYXJnaW4tYm90dG9tOjEycHg7Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0icHJpbWFyeSIgaWQ9ImJ0bkV4dCI+U3ByYXdkxbogYWRyZXMgemV3bsSZdHJ6bnk8L2J1dHRvbj4KICAgICAgPGlucHV0IGlkPSJleHRSZXN1bHQiIGNsYXNzPSJlbXB0eSIgcmVhZG9ubHkgdmFsdWU9IuKAlCBicmFrIGRhbnljaCDigJQiPgogICAgICA8c3BhbiBjbGFzcz0iY2lkci10YWciPngvMjQ8L3NwYW4+CiAgICAgIDxidXR0b24gY2xhc3M9InByaW1hcnkiIGlkPSJidG5TdGFydCIgZGlzYWJsZWQ+4pa2IFN0YXJ0PC9idXR0b24+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyI+CiAgICAgIDxkaXYgY2xhc3M9InBvcnRzIiBpZD0icG9ydHMiPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjgwIiBjaGVja2VkPiA4MCAoaHR0cCk8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjQ0MyIgY2hlY2tlZD4gNDQzIChodHRwcyk8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjgwODAiIGNoZWNrZWQ+IDgwODA8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9Ijg0NDMiIGNoZWNrZWQ+IDg0NDM8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjgwMDAiIGNoZWNrZWQ+IDgwMDA8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjMwMDAiIGNoZWNrZWQ+IDMwMDA8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjUwMDAiIGNoZWNrZWQ+IDUwMDA8L2xhYmVsPgogICAgICAgIDxsYWJlbCBjbGFzcz0icG9ydC1jaGlwIGNoZWNrZWQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9Ijg4ODgiIGNoZWNrZWQ+IDg4ODg8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICA8L2Rpdj4KCiAgPCEtLSBXeW5pa2kgLS0+CiAgPGRpdiBjbGFzcz0icGFuZWwiPgogICAgPHRhYmxlPgogICAgICA8dGhlYWQ+CiAgICAgICAgPHRyPgogICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoyMHB4OyI+PC90aD4KICAgICAgICAgIDx0aD5BZHJlcyBJUDwvdGg+CiAgICAgICAgICA8dGg+UGluZzwvdGg+CiAgICAgICAgICA8dGg+U3RhdHVzPC90aD4KICAgICAgICAgIDx0aD5PdHdhcnRlIHBvcnR5PC90aD4KICAgICAgICA8L3RyPgogICAgICA8L3RoZWFkPgogICAgICA8dGJvZHkgaWQ9InJlc3VsdHNCb2R5Ij48L3Rib2R5PgogICAgPC90YWJsZT4KICAgIDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIiBpZD0iZW1wdHlTdGF0ZSI+QnJhayB3eW5pa8OzdyDigJQgdXN0YXcgemFrcmVzIGkga2xpa25paiBTdGFydC48L2Rpdj4KICA8L2Rpdj4KCgo8L2Rpdj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogIGNvbnN0ICQgPSBpZCA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgY29uc3QgcG9ydHNXcmFwID0gJCgncG9ydHMnKTsKICBjb25zdCByZXN1bHRzQm9keSA9ICQoJ3Jlc3VsdHNCb2R5Jyk7CiAgY29uc3QgZW1wdHlTdGF0ZSA9ICQoJ2VtcHR5U3RhdGUnKTsKICBjb25zdCBidG5TdGFydCA9ICQoJ2J0blN0YXJ0Jyk7CgogIGxldCBzdG9wRmxhZyA9IGZhbHNlOwoKICAvLyAtLS0gcG9ydCBjaGlwIHRvZ2dsZSBzdHlsaW5nIC0tLQogIHBvcnRzV3JhcC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBlPT57CiAgICBjb25zdCBjaGlwID0gZS50YXJnZXQuY2xvc2VzdCgnLnBvcnQtY2hpcCcpOwogICAgaWYoY2hpcCkgY2hpcC5jbGFzc0xpc3QudG9nZ2xlKCdjaGVja2VkJywgZS50YXJnZXQuY2hlY2tlZCk7CiAgfSk7CgogIC8vIC0tLSBleHRlcm5hbCBJUCAtLS0KICAkKCdidG5FeHQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jICgpPT57CiAgICBjb25zdCBlbCA9ICQoJ2V4dFJlc3VsdCcpOwogICAgZWwudmFsdWUgPSAnc3ByYXdkemFt4oCmJzsKICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7CiAgICBidG5TdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICB0cnl7CiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCdodHRwczovL2FwaS5pcGlmeS5vcmc/Zm9ybWF0PWpzb24nLCB7Y2FjaGU6J25vLXN0b3JlJ30pOwogICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTsKICAgICAgZWwudmFsdWUgPSBkYXRhLmlwOwogICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOwogICAgICBidG5TdGFydC5kaXNhYmxlZCA9IGZhbHNlOwogICAgfWNhdGNoKGVycil7CiAgICAgIGVsLnZhbHVlID0gJ2LFgsSFZCAoYnJhayBpbnRlcm5ldHU/KSc7CiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7CiAgICB9CiAgfSk7CgogIC8vIC0tLSBzaW5nbGUgaG9zdCtwb3J0IHByb2JlIHZpYSB0aW1lZCBmZXRjaCAoaGV1cmlzdGljKSAtLS0KICBmdW5jdGlvbiBwcm9iZShpcCwgcG9ydCwgdGltZW91dE1zKXsKICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlPT57CiAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7CiAgICAgIGNvbnN0IHQwID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKT0+eyBjb250cm9sbGVyLmFib3J0KCk7IH0sIHRpbWVvdXRNcyk7CiAgICAgIGZldGNoKGBodHRwOi8vJHtpcH06JHtwb3J0fS9gLCB7IG1vZGU6J25vLWNvcnMnLCBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLCBjYWNoZTonbm8tc3RvcmUnIH0pCiAgICAgICAgLnRoZW4oKCk9PnsKICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICAgICAgICByZXNvbHZlKHsgb3Blbjp0cnVlLCBtczogTWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKS10MCkgfSk7CiAgICAgICAgfSkKICAgICAgICAuY2F0Y2goZXJyPT57CiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwogICAgICAgICAgY29uc3QgZWxhcHNlZCA9IE1hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCktdDApOwogICAgICAgICAgLy8gc3p5YmtpIGLFgsSFZCAocG96YSBhYm9ydGVtKSB6d3lrbGUgb3puYWN6YSAiY29ubmVjdGlvbiByZWZ1c2VkIiAtPiBob3N0IMW8eWplLCBwb3J0IHphbWtuacSZdHkKICAgICAgICAgIGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InKXsKICAgICAgICAgICAgcmVzb2x2ZSh7IG9wZW46ZmFsc2UsIG1zOm51bGwsIHJlYXNvbjondGltZW91dCcgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXNvbHZlKHsgb3BlbjpmYWxzZSwgbXM6IGVsYXBzZWQsIHJlYXNvbjoncmVmdXNlZCcgfSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIG1ha2VSb3coaXApewogICAgY29uc3QgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwogICAgdHIuY2xhc3NOYW1lID0gJ2hvc3Qtcm93JzsKICAgIHRyLmlubmVySFRNTCA9IGAKICAgICAgPHRkPjxzcGFuIGNsYXNzPSJjYXJldCI+4pa2PC9zcGFuPjwvdGQ+CiAgICAgIDx0ZCBjbGFzcz0iaXAtY2VsbCI+JHtpcH08L3RkPgogICAgICA8dGQgY2xhc3M9InBpbmctdmFsIiBkYXRhLXJvbGU9InBpbmciPuKApjwvdGQ+CiAgICAgIDx0ZCBkYXRhLXJvbGU9InN0YXR1cyI+PHNwYW4gY2xhc3M9ImJhZGdlIGRvd24iPnNwcmF3ZHphbTwvc3Bhbj48L3RkPgogICAgICA8dGQgZGF0YS1yb2xlPSJvcGVucG9ydHMiPuKAlDwvdGQ+CiAgICBgOwogICAgY29uc3QgZGV0YWlsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKICAgIGRldGFpbC5jbGFzc05hbWUgPSAnZGV0YWlsLXJvdyc7CiAgICBkZXRhaWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKICAgIHRkLmNvbFNwYW4gPSA1OwogICAgdGQuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImRldGFpbC1pbm5lciIgZGF0YS1yb2xlPSJkZXRhaWwiPjwvZGl2PmA7CiAgICBkZXRhaWwuYXBwZW5kQ2hpbGQodGQpOwoKICAgIHRyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PnsKICAgICAgY29uc3Qgb3BlbiA9IGRldGFpbC5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZSc7CiAgICAgIGRldGFpbC5zdHlsZS5kaXNwbGF5ID0gb3BlbiA/ICdub25lJyA6ICcnOwogICAgICB0ci5xdWVyeVNlbGVjdG9yKCcuY2FyZXQnKS5jbGFzc0xpc3QudG9nZ2xlKCdvcGVuJywgIW9wZW4pOwogICAgfSk7CgogICAgcmV0dXJuIHsgdHIsIGRldGFpbCB9OwogIH0KCiAgbGV0IHJ1bm5pbmcgPSBmYWxzZTsKCiAgYnRuU3RhcnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKT0+ewogICAgaWYocnVubmluZyl7CiAgICAgIHN0b3BGbGFnID0gdHJ1ZTsKICAgICAgYnRuU3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CgogICAgY29uc3QgaXBWYWwgPSAkKCdleHRSZXN1bHQnKS52YWx1ZS50cmltKCk7CiAgICBjb25zdCBtID0gaXBWYWwubWF0Y2goL14oXGR7MSwzfSlcLihcZHsxLDN9KVwuKFxkezEsM30pXC4oXGR7MSwzfSkkLyk7CiAgICBpZighbSl7IGFsZXJ0KCdOYWpwaWVydyBzcHJhd2TFuiBhZHJlcyB6ZXduxJl0cnpueSAocHJ6eWNpc2sgcG8gbGV3ZWopLicpOyByZXR1cm47IH0KICAgIGNvbnN0IG8xID0gcGFyc2VJbnQobVsxXSksIG8yID0gcGFyc2VJbnQobVsyXSksIG8zID0gcGFyc2VJbnQobVszXSk7CiAgICBpZihbbzEsbzIsbzNdLnNvbWUobz0+bzwwfHxvPjI1NSkpeyBhbGVydCgnT2t0ZXR5IG11c3rEhSBiecSHIHcgemFrcmVzaWUgMOKAkzI1NS4nKTsgcmV0dXJuOyB9CiAgICBjb25zdCB0aW1lb3V0TXMgPSA3MDA7CiAgICBjb25zdCBzZWxlY3RlZFBvcnRzID0gQXJyYXkuZnJvbShwb3J0c1dyYXAucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQ6Y2hlY2tlZCcpKS5tYXAoaT0+cGFyc2VJbnQoaS52YWx1ZSkpOwoKICAgIGlmKHNlbGVjdGVkUG9ydHMubGVuZ3RoID09PSAwKXsgYWxlcnQoJ1d5YmllcnogY28gbmFqbW5pZWogamVkZW4gcG9ydC4nKTsgcmV0dXJuOyB9CgogICAgcmVzdWx0c0JvZHkuaW5uZXJIVE1MID0gJyc7CiAgICBlbXB0eVN0YXRlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBzdG9wRmxhZyA9IGZhbHNlOwogICAgcnVubmluZyA9IHRydWU7CiAgICBidG5TdGFydC5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9InNwaW5uZXIiPjwvc3Bhbj5TdG9wJzsKICAgIGJ0blN0YXJ0LmNsYXNzTGlzdC5yZW1vdmUoJ3ByaW1hcnknKTsKCiAgICBjb25zdCB0b3RhbCA9IDI1NDsgLy8gLjEgLSAuMjU0CiAgICBsZXQgZG9uZSA9IDA7CgogICAgY29uc3QgQ09OQ1VSUkVOQ1kgPSAyNDsKICAgIGxldCBjdXJzb3IgPSAxOwoKICAgIGFzeW5jIGZ1bmN0aW9uIHdvcmtlcigpewogICAgICB3aGlsZShjdXJzb3IgPD0gMjU0KXsKICAgICAgICBpZihzdG9wRmxhZykgcmV0dXJuOwogICAgICAgIGNvbnN0IGxhc3QgPSBjdXJzb3IrKzsKICAgICAgICBjb25zdCBpcCA9IGAke28xfS4ke28yfS4ke28zfS4ke2xhc3R9YDsKCiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvcihjb25zdCBwb3J0IG9mIHNlbGVjdGVkUG9ydHMpewogICAgICAgICAgaWYoc3RvcEZsYWcpIGJyZWFrOwogICAgICAgICAgY29uc3QgciA9IGF3YWl0IHByb2JlKGlwLCBwb3J0LCB0aW1lb3V0TXMpOwogICAgICAgICAgcmVzdWx0cy5wdXNoKHsgcG9ydCwgLi4uciB9KTsKICAgICAgICB9CgogICAgICAgIGNvbnN0IGFueU9wZW4gPSByZXN1bHRzLnNvbWUocj0+ci5vcGVuKTsKCiAgICAgICAgaWYoYW55T3Blbil7CiAgICAgICAgICBjb25zdCB7IHRyLCBkZXRhaWwgfSA9IG1ha2VSb3coaXApOwogICAgICAgICAgcmVzdWx0c0JvZHkuYXBwZW5kQ2hpbGQodHIpOwogICAgICAgICAgcmVzdWx0c0JvZHkuYXBwZW5kQ2hpbGQoZGV0YWlsKTsKCiAgICAgICAgICBjb25zdCBwaW5ncyA9IHJlc3VsdHMuZmlsdGVyKHI9PnIubXMhPT1udWxsKS5tYXAocj0+ci5tcyk7CiAgICAgICAgICBjb25zdCBtaW5QaW5nID0gcGluZ3MubGVuZ3RoID8gTWF0aC5taW4oLi4ucGluZ3MpIDogbnVsbDsKCiAgICAgICAgICBjb25zdCBwaW5nRWwgPSB0ci5xdWVyeVNlbGVjdG9yKCdbZGF0YS1yb2xlPXBpbmddJyk7CiAgICAgICAgICBwaW5nRWwudGV4dENvbnRlbnQgPSBtaW5QaW5nIT09bnVsbCA/IGAke21pblBpbmd9IG1zYCA6ICfigJQnOwogICAgICAgICAgcGluZ0VsLmNsYXNzTGlzdC50b2dnbGUoJ2Zhc3QnLCBtaW5QaW5nIT09bnVsbCAmJiBtaW5QaW5nIDwgODApOwoKICAgICAgICAgIHRyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXJvbGU9c3RhdHVzXScpLmlubmVySFRNTCA9IGA8c3BhbiBjbGFzcz0iYmFkZ2UgdXAiPm9kcG93aWFkYTwvc3Bhbj5gOwoKICAgICAgICAgIGNvbnN0IG9wZW5MaXN0ID0gcmVzdWx0cy5maWx0ZXIocj0+ci5vcGVuKS5tYXAocj0+ci5wb3J0KTsKICAgICAgICAgIHRyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXJvbGU9b3BlbnBvcnRzXScpLnRleHRDb250ZW50ID0gb3Blbkxpc3Quam9pbignLCAnKTsKCiAgICAgICAgICBjb25zdCBkZXRhaWxXcmFwID0gZGV0YWlsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXJvbGU9ZGV0YWlsXScpOwogICAgICAgICAgZGV0YWlsV3JhcC5pbm5lckhUTUwgPSByZXN1bHRzLm1hcChyPT5gCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvcnQtcmVzdWx0ICR7ci5vcGVuPydvcGVuJzonY2xvc2VkJ30iPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwIj46JHtyLnBvcnR9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzIj4ke3Iub3BlbiA/ICdPVFdBUlRZIMK3ICcrci5tcysnIG1zJyA6IChyLnJlYXNvbj09PSd0aW1lb3V0JyA/ICdicmFrIG9kcG93aWVkemknIDogJ3phbWtuacSZdHknKX08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgYCkuam9pbignJyk7CiAgICAgICAgfQoKICAgICAgICBkb25lKys7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdCB3b3JrZXJzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOkNPTkNVUlJFTkNZfSwgd29ya2VyKTsKICAgIGF3YWl0IFByb21pc2UuYWxsKHdvcmtlcnMpOwoKICAgIHJ1bm5pbmcgPSBmYWxzZTsKICAgIGlmKHJlc3VsdHNCb2R5LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCl7CiAgICAgIGVtcHR5U3RhdGUudGV4dENvbnRlbnQgPSAnQnJhayBvZHBvd2lhZGFqxIVjeWNoIGhvc3TDs3cgdyB0eW0gemFrcmVzaWUuJzsKICAgICAgZW1wdHlTdGF0ZS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICB9CiAgICBidG5TdGFydC5kaXNhYmxlZCA9IGZhbHNlOwogICAgYnRuU3RhcnQudGV4dENvbnRlbnQgPSAn4pa2IFN0YXJ0JzsKICAgIGJ0blN0YXJ0LmNsYXNzTGlzdC5hZGQoJ3ByaW1hcnknKTsKICB9KTsKCn0pKCk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K

Michał_Stankiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 171
0

Muszę się poddać z wprowadzaniem WASM ze względu na brak łatwego debugowania projektu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.