Integracja konsoli 
Skaner adresów IP online JS/HTML
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
Integracja z konsolą! teraz wszystkie przyciski wywołują komendy z konsoli

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
@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.
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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 oczyczyli 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

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
@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/

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
UI otrzymało usprawnienia tab->win, win->tab

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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ść :(
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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)

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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%



- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
Musiałem usunąć relase bo exe sprawiał problem instalator też -_-
ale wszystko na dobrej drodze :)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 1764
Ciekawy pomysł na projekt. Skąd pomysł na niego? Do czego go używasz?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
A w przyszłości tak dla zabawy będę chciał dla siebie zrobić wersję bigbox :D



- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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ś.

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
Bez pomocy utknę w pętli swoich pomysłów

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
-> "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)

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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



- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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 :)

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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


- Rejestracja: dni
- Ostatnio: dni
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)
- Rejestracja: dni
- Ostatnio: dni
@MichałS sporo tworzysz, myslales zeby swoje projekty jakos monetyzowac?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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:
IP Scanner (LSB, TBM-Tools -> LS)
- wynik otwiera sie osobno: (-> CS, jako "IP Results")
Shell
- 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.
- Left Section (LS)
- Right Section (RS)
a. AI Assistant (dostep: LSB, TBM-Tools -> otwiera sie w: RS) - Center Section (CS)
a. logo w tle
b. ladowanie ostatnich sesji (widok powitalny "Recent sessions") - Down Section (DS)
a. Terminal
b. Macro
c. Console PowerShell - Down Status Bar (DSB)
a. loader
b. ilosc aktywnych procesow
c. pasek ladowania 0-100%
d. dodatkowe miejsce na informacje - 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## Toolsponizej
LS, RS, CS powinny miec identyczny system zakladek (parytet tab/window, patrz
CONTRIBUTING.md §3a).
Tools
- 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")
- Country IP Library (TBM-Options)
- edytor -> LS, jako "IP Library (edytor)"
- podglad -> CS, jako "IP Library (widok)"
- Topology Map (LSB, TBM-Options -> CS)
- World Globe (LSB, TBM-Options -> CS)
- Shell Craft (TBM-Tools)
- ST a. Library -> LS
- ST b. Inspector -> LS
- glowny widok -> CS
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
Pozbywam się sentymentów które tylko spowalniały pracę to ostatni screen z dual UI
Aktualnie pracuję tylko nad wersją inspirowaną VS Code

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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...

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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:

Po:

UI:

Na to nie zwracajcie uwagi zaraz naprawię

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
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

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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 172
Muszę się poddać z wprowadzaniem WASM ze względu na brak łatwego debugowania projektu.