HiLink API Huawei - Dyskusja

Kwestie techniczne, konfiguracja i rozwiązywanie problemów z modemami GSM (GPRS, EDGE, UMTS, HSDPA i HSUPA).

Moderator: Moderatorzy

tosiek
Specjalista bezprzewodowy-junior
Posty: 296
Rejestracja: 2012-03-24, 14:00
Lokalizacja: inąd

Re: HiLink API Huawei - Dyskusja

Postautor: tosiek » 2016-10-16, 06:18

Na nowym firmware trzeba odświeżać token co każde zapytanie, nawet jeśli się nie zmieni.
(22.317.01.00.778
WEBUI: 17.100.13.01.03)

Zapytanie POST:
http://%modIPAdr%/api/ussd/send - należy zmienić na właściwy adres

Kod: Zaznacz cały

curl -X POST -d "ZAWARTOSC XMLa" http://%modIPAdr%/api/ussd/send %_SID% %_Token% -H "Content-Type: text/xml"


zapytanie GET:

Kod: Zaznacz cały

curl -X GET http://%modIPAdr%/api/ussd/get %_SID% %_Token%


Jak chcecie przkeirowac wyjście CURLa to trzeba dodac przełącznik -s np.:

Kod: Zaznacz cały

curl -X GET http://%modIPAdr%/api/ussd/status %_SID% %_Token% -s  | find "<result>0</result>" >nul
if errorlevel 1 (
echo nie znaleziono ciagu
) else (
echo znaleziono ciag
)



Samo pobieranie tokenu:
http://pastebin.com/49k5A30e
Źródło pobieranie tokenu: penknife @ http://forum.jdtech.pl/Watek-hilink-api ... 5#pid31735

Przykładowe wysłanie USSD (zakładam że macie tryb automatyczny lub 4g - umts):

Kod: Zaznacz cały

@echo off &:: HHL_token_test.bat
setlocal
set modIPAdr=192.168.8.1

call :getHHLToken %modIPAdr%
echo *****Stan konta*****
curl -X POST -d "<request><content>*101#</content><codeType></codeType><timeout>5</timeout></request>" http://%modIPAdr%/api/ussd/send %_SID% %_Token% -H "Content-Type: text/xml"  >nul
if "%~1"=="" echo.OK
call :usdchecker
curl -X GET http://%modIPAdr%/api/ussd/get %_SID% %_Token%
if "%~1"=="" echo.OK

endlocal
goto :eof

:usdchecker
setlocal EnableDelayedExpansion EnableExtensions
curl -X GET http://192.168.8.1/api/ussd/status %_SID% %_Token% -s  | find "<result>0</result>" >nul
if errorlevel 1 (
    ping -n 1 127.0.0.1 >nul
    goto usdchecker
)
endlocal
goto :eof

:getHHLToken &::[adres IP]:zwraca zmienne %_Token% oraz %_SID% z Huawei HiLink do wykorzystania z curl lub wget, przyjmując opcjonalnie adres IP modemu
setlocal
rem przypisanie zmiennej HHL adresu modemu
SET HHL=hi.link
rem przyjmij pierwszy parametr jako adres IP modemu lecz pierw zweryfikuj
if "%~1" neq "" if /i "%~1" neq "%HHL%" echo. %~1 |findstr /r /c:"^ *[0-9]*[0-9]\.[0-9]*[0-9]\.[0-9]*[0-9]\.[0-9]*[0-9] *$" >nul &&set HHL=%~1
rem inicjalizacja niepustych zmiennych
set "_SID= "
set "_Token= "
rem wyczyść zmienną z adresem ze spacji
set HHL=%HHL: =%
set _c=curl -q -s -X GET --stderr nul --max-time 5
rem pobranie tokena oraz ID sesji i przypisanie wartości
for /f "tokens=1-4 delims=<>" %%a in ('%_c% http://%HHL%/api/webserver/SesTokInfo ^|find /i "Info>"') do (
rem if /i "%%~c"=="/SesInfo" - sprawdza czy zmienna nie przekroczyła linii
if /i "%%~a"=="SesInfo" if /i "%%~c"=="/SesInfo" set _SID=--header "Cookie: %%b"
if /i "%%~a"=="TokInfo" if /i "%%~c"=="/TokInfo" set _Token=--header "__RequestVerificationToken: %%b"
rem jeżeli przed pierwszym znakiem < lub > coś występuje:
if /i "%%~b"=="SesInfo" if /i "%%~d"=="/SesInfo" set _SID=--header "Cookie: %%c"
if /i "%%~b"=="TokInfo" if /i "%%~d"=="/TokInfo" set _Token=--header "__RequestVerificationToken: %%c"
)

rem jeśli nowy token nie istnieje uzyskaj stary:
if "%_Token:~0,2%"==" " for /f "tokens=1-3 delims=<>" %%a in ('%_c% http://%HHL%/api/webserver/token ^|find /i "token"') do (
if /i "%%~a"=="token" set _Token=--header "__RequestVerificationToken: %%b"
if /i "%%~b"=="token" set _Token=--header "__RequestVerificationToken: %%c"
)

set _exit=0
if "%_SID:~0,2%"==" " set /a "_exit+=2"
if "%_Token:~0,2%"==" " set /a "_exit+=1"
endlocal &(set "_SID=%_SID%" )&(set "_Token=%_Token%" )& exit /b %_exit%
goto :eof

Gdzie :usdchecker sprawdza co sekundę czy modem dostał odpowiedź. Jeśli nie dostanie to chyba po 20 sekundach jest timeout, można ustawić w zapytaniu albo jest ingorowane.

W załączniku przykładowy skrypt dla Darmowy internet LTE w RedBullu. Przełącza na 4G->UMTS aby działało USSD. Sprawdza stan kona, pakietu MB oraz stan LTE i aktywuje, potem restartuje modem, czeka aż się wybudzi i wymusza tylko LTE. Sam restart modemu jeśli jest wpięty w router nic nie daje. Często bez restartu nie da się z powrotem włączyć tylko LTE.
kod: http://pastebin.com/TReTiFHa

Nie sprawdzam odpowiedzi modemu dla zmainy trybów 3g etc. Sprawdzam tylko czy curl nie wywalił błędu.

pinger sprawdza czy modem wstał.

Miłego skryptowania :)

PS skrypt popsuje wam ręczne wymuszanie częstotliwości jeśli robiliście.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
brak podpisu, tak jakby

Awatar użytkownika
onken
** Moderator **
Posty: 4539
Rejestracja: 2014-06-07, 20:49
Lokalizacja: Kraków

Re: HiLink API Huawei - Dyskusja

Postautor: onken » 2016-10-16, 10:25

A mozna taki skrypt poprosić pod linuxa :) ??
Wypożyczę kartę SIM: internet bez limitu w sieci Play
Kontakt na PW
viewtopic.php?f=5&t=57123

tosiek
Specjalista bezprzewodowy-junior
Posty: 296
Rejestracja: 2012-03-24, 14:00
Lokalizacja: inąd

Re: HiLink API Huawei - Dyskusja

Postautor: tosiek » 2016-10-16, 18:52

na linuxie curl ma praktycznie identyczna składnie
brak podpisu, tak jakby

beginnerpoland
Początkujący użytkownik forum
Posty: 3
Rejestracja: 2016-11-28, 12:32

Re: HiLink API Huawei - Dyskusja

Postautor: beginnerpoland » 2016-11-28, 12:43

Witam, odnosnie postów na temat uwalonego HUAWEI E3372s-153 mam kilka pytan poniewaz nie potrafie odnalezc jednoznacznego rozwiazania problemu.

Modem dzialal w trybie takim, iz po podlaczeniu do usb uruchamiala mi sie Playowska aplikacja itp, wszystko dzialalo normalnie ale zaczalem kombinowac podlaczajac go po usb do routera Asus Rtn10UB i predkosc ktora osiagalem to 9/1 mbps, po usb natomiast bezposrednio do pc 50/23 mbps w Playu LTE. Zaczalem więc modzić i chcialem sprobowac przerobic go w tryb Hilink (nie wiem czemu myslalem ze to cos da) Po zmianach i cudach wiankach na modemie mam teraz oprogramowanie 22.286.53.01.161 i raz udalo mi sie go wprowadzic tym switcherem.bat (tym executablem) w te tryby debug i project mode ale cos poszlo nie tak gdy chcialem wrocic z HILINK na normalny tryb. Modem byl widoczny pod adresem 192.168.8.1 a raz jako sterownik sieci NDIS w polaczeniach ( MOJ SYSTEM TO WINDOWS 7 64bit)
Natomiast teraz nie widzę go po usb, nie widzę go także w polaczeniach, brak pingu do 192.168.8.1 ani opcji wejscia przez webui na niego. Tak po prostu jest najwidoczniej zbrickowany. Czy jest opcja jakakolwiek aby przywrocic go do dashboardu playa i softa ktory mial wczesniej ?? bardzo mi na tym zalezy, probowalem wykonywac kroki opisywane w tutorialach ale przez to, że w polowie tutoriala jest przesiadka do nastepnego postu o wprowadzaniu w tryb DEBUG I PROJECT (przelaczanie skryptu) jest już kocioł i nie wiem ktore sterowniki powinny byc zainstalowane najpierw a ktore pozniej, oraz nawet kiedy modem ma byc wpiety pod usb a kiedy nie. Prosilbym o ewentualną pomoc jak doprowadzic do stanu takiego żebym chociaz widzial modem w tym switcherze albo zebym mial mozliwosc dostania sie chociaz przez web ui na niego. Modem uwalilem świadomie/nieświadomie i teraz bardzo chcialbym przywrocic go do poprzedniego stanu, i wypieprzyć ten hilink aby byl że tak powiem "jak fabryka w playu mi dała".

Prosze o pomoc, pozdrawiam !

tmks90
Stały użytkownik forum
Posty: 80
Rejestracja: 2017-11-08, 16:21

Re: HiLink API Huawei - Dyskusja

Postautor: tmks90 » 2017-11-08, 16:25

Witam. Bardzo prosze o pomoc. Posiadam modem E3372 z hilink. potrzebuje przerobić go żeby nie miał hilinka. Próbuje już tysiąca sposobów ale zawszez przy instalacji firmware wyskakuje błąd 10 przy wyszukiwaniu portu. Posiadam windows 10. Czy jest jakiś szybki sposób żeby to zrobić? Jeszcze raz bardzo prosze o pomoc bo już nie wiem co zrobić

tosiek
Specjalista bezprzewodowy-junior
Posty: 296
Rejestracja: 2012-03-24, 14:00
Lokalizacja: inąd

Re: HiLink API Huawei - Dyskusja

Postautor: tosiek » 2018-04-24, 18:41

tmks90 przełącz ręcznie w tryb debug lub project mode. Od hilinka usuń: Mobile broadband hl service
brak podpisu, tak jakby

Przmus
Stały użytkownik forum
Posty: 91
Rejestracja: 2012-06-02, 03:43
Lokalizacja: Polska

Re: HiLink API Huawei - Dyskusja

Postautor: Przmus » 2018-05-19, 16:26

Podzielę się z Wami moim sposobem na włączenie DMZ w Huawei B525, który mam od wczoraj.
Jest to router z T-mobile, więc brakuje masy ustawień, w tym DMZ. W związku z tym że jest on połączony Ethernetem do głównego, lepszego routera chciałem przekierować na niego cały ruch przychodzący.
Oczywiście dało się to zrobić ustawiając przekierowania portów ręcznie:

Kod: Zaznacz cały

Name    WAN Port    LAN IP Address    LAN Port    Protocol    Status    Options
Synology1   1-67   192.168.8.100   1-67   TCP/UDP   On   EditDelete
Synology2   69-513   192.168.8.100   69-513   TCP/UDP   On   EditDelete
Synology3   515-545   192.168.8.100   515-545   TCP/UDP   On   EditDelete
Synology4   547-1700   192.168.8.100   547-1700   TCP/UDP   On   EditDelete
Synology5   1702-9999   192.168.8.100   1702-9999   TCP/UDP   On   EditDelete
Synology6   10001-28089   192.168.8.100   10001-28089   TCP/UDP   On   EditDelete
Synology7   28091-49999   192.168.8.100   28091-49999   TCP/UDP   On   EditDelete
Synology8   50021-65535   192.168.8.100   50021-65535   TCP/UDP   On   EditDelete


Jednak dzisiaj, po znalezieniu tego tematu: viewtopic.php?t=42168
Zainteresowała mnie część o DMZ, adres: http://192.168.8.1/api/security/dmz
Po otworzeniu w przeglądarce wyświetlało się:

Kod: Zaznacz cały

100003

Ale to dlatego, że byłem niezalogowany. Po zalogowaniu wyglądało to tak:

Kod: Zaznacz cały

0192.168.8.100

Pierwsza cyfra to status tej opcji (wyłączona), a dalej adres IP (pewnie domyślnie ustawiony, ale taki właśnie otrzymuje router główny).

Bawiłem się chwilę żeby zmienić to korzystając z curla, ale w końcu poddałem się. Przyszedł mi na myśl pomysł aby zrobić to z poziomu przeglądarki, już po zalogowaniu. I tak udało mi się stworzyć skrypt dla rozszerzenia Tampermonkey: https://chrome.google.com/webstore/deta ... fkfo?hl=en
O następującej treści:

Kod: Zaznacz cały

// ==UserScript==
// @name         Przemek-Huawei-Post-Request
// @namespace    x
// @version      0.1
// @description  bla bla bla
// @author       Me
// @match        https://192.168.8.1/html/quicksetup.html
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...
    if (confirm('Wykonać skrypt z zapytaniem do routera Huawei?')) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/api/user/state-login", false);
        xmlhttp.send();
        alert("Status zalogowania:\n"+xmlhttp.responseText);

        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/api/security/dmz", false);
        xmlhttp.send();
        alert("Status DMZ:\n"+xmlhttp.responseText);

        var SesTokInfo = true;
        xmlhttp = new XMLHttpRequest();
        if(!SesTokInfo){
        xmlhttp.open("GET", "/api/webserver/token", false);
        }
        else{
        xmlhttp.open("GET", "/api/webserver/SesTokInfo", false);
        }
        xmlhttp.send();
        alert("Token response:\n"+xmlhttp.responseText);
        if(!SesTokInfo){
        var oParser = new DOMParser();
        var oDOM = oParser.parseFromString(xmlhttp.responseText, "text/xml");
        var Token = oDOM.getElementsByTagName("token")[0].childNodes[0].nodeValue;
        }
        else {
        var oParser = new DOMParser();
        var oDOM = oParser.parseFromString(xmlhttp.responseText, "text/xml");
        var Token = oDOM.getElementsByTagName("TokInfo")[0].childNodes[0].nodeValue;
        }
        alert("Token only:\n"+Token);

        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("POST", "/api/security/dmz", false);
        xmlhttp.setRequestHeader("__RequestVerificationToken", Token);
        xmlhttp.setRequestHeader("_ResponseSource", "Browser");
        xmlhttp.setRequestHeader("Content-Type", "text/xml");
        xmlhttp.send("<request><DmzStatus>1</DmzStatus><DmzIPAddress>192.168.8.100</DmzIPAddress></request>");
        alert("Status wlaczenia DMZ:\n"+xmlhttp.responseText);

        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/api/security/dmz", false);
        xmlhttp.send();
        alert("Ponownie Status DMZ:\n"+xmlhttp.responseText);
    }
})();

Jest to brzydki kod, ma dużo niepotrzebnych zapytań (do testów), ale w końcu zadziałał i ustawił mój DMZ na "1" dla adresu 192.168.8.100 :)

Użycie:
Po zalogowaniu się na https://192.168.8.1/html/home.html i wejściu w zakładkę "Ustawienia" pojawia się pytanie czy wykonać skrypt. Dalej kolejne alerty ze statusem akcji.

Po zmianie tego, co jest nam potrzebne można po prostu wyłączyć go w ustawieniach Tampermonkey'a.

Myślę, że jest to najprostszy sposób na modemy/routery które wymagają zalogowania się do zmiany ustawień.

szymek2000
Stały użytkownik forum
Posty: 72
Rejestracja: 2014-10-11, 09:42
Lokalizacja: kalisz

Re: HiLink API Huawei - Dyskusja

Postautor: szymek2000 » 2018-08-20, 20:01

Przmus pisze: [ciach]

Zainteresowała mnie część o DMZ, adres: http://192.168.8.1/api/security/dmz
Po otworzeniu w przeglądarce wyświetlało się:

Kod: Zaznacz cały

100003

Ale to dlatego, że byłem niezalogowany. Po zalogowaniu wyglądało to tak:

Kod: Zaznacz cały

0192.168.8.100

Pierwsza cyfra to status tej opcji (wyłączona), a dalej adres IP (pewnie domyślnie ustawiony, ale taki właśnie otrzymuje router główny).

Bawiłem się chwilę żeby zmienić to korzystając z curla, ale w końcu poddałem się. Przyszedł mi na myśl pomysł aby zrobić to z poziomu przeglądarki, już po zalogowaniu. I tak udało mi się stworzyć skrypt dla rozszerzenia Tampermonkey: https://chrome.google.com/webstore/deta ... fkfo?hl=en
O następującej treści:

Kod: Zaznacz cały

// ==UserScript==
// @name         Przemek-Huawei-Post-Request
// @namespace    x
// @version      0.1
// @description  bla bla bla
// @author       Me
// @match        https://192.168.8.1/html/quicksetup.html
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...
    if (confirm('Wykonać skrypt z zapytaniem do routera Huawei?')) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/api/user/state-login", false);
        xmlhttp.send();
        alert("Status zalogowania:\n"+xmlhttp.responseText);

        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/api/security/dmz", false);
        xmlhttp.send();
        alert("Status DMZ:\n"+xmlhttp.responseText);

        var SesTokInfo = true;
        xmlhttp = new XMLHttpRequest();
        if(!SesTokInfo){
        xmlhttp.open("GET", "/api/webserver/token", false);
        }
        else{
        xmlhttp.open("GET", "/api/webserver/SesTokInfo", false);
        }
        xmlhttp.send();
        alert("Token response:\n"+xmlhttp.responseText);
        if(!SesTokInfo){
        var oParser = new DOMParser();
        var oDOM = oParser.parseFromString(xmlhttp.responseText, "text/xml");
        var Token = oDOM.getElementsByTagName("token")[0].childNodes[0].nodeValue;
        }
        else {
        var oParser = new DOMParser();
        var oDOM = oParser.parseFromString(xmlhttp.responseText, "text/xml");
        var Token = oDOM.getElementsByTagName("TokInfo")[0].childNodes[0].nodeValue;
        }
        alert("Token only:\n"+Token);

        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("POST", "/api/security/dmz", false);
        xmlhttp.setRequestHeader("__RequestVerificationToken", Token);
        xmlhttp.setRequestHeader("_ResponseSource", "Browser");
        xmlhttp.setRequestHeader("Content-Type", "text/xml");
        xmlhttp.send("<request><DmzStatus>1</DmzStatus><DmzIPAddress>192.168.8.100</DmzIPAddress></request>");
        alert("Status wlaczenia DMZ:\n"+xmlhttp.responseText);

        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/api/security/dmz", false);
        xmlhttp.send();
        alert("Ponownie Status DMZ:\n"+xmlhttp.responseText);
    }
})();


[ciach]


u mnie coś nie odpala się ten skrypt
firefox 61.0.2, opcjonalnie jaki musi być to to zmienić? dziękuję za podpowiedz.

Przmus
Stały użytkownik forum
Posty: 91
Rejestracja: 2012-06-02, 03:43
Lokalizacja: Polska

Re: HiLink API Huawei - Dyskusja

Postautor: Przmus » 2018-08-21, 05:42

To spróbuj Tampermonkeyem na Chrome. Nie chce mi się sprawdzać dlaczego na FF nie działa, zwłaszcza, że jest to jednorazowa operacja.

szymek2000
Stały użytkownik forum
Posty: 72
Rejestracja: 2014-10-11, 09:42
Lokalizacja: kalisz

Re: HiLink API Huawei - Dyskusja

Postautor: szymek2000 » 2018-08-21, 08:04

Dla wersji chrome 68.0.3440.106 też nic się nie dzieje, skrypt zapisany, na liście niby aktywny choć w menu widnieje " brak aktywnych skryptów", sama wtyczka aktywna.

Przmus
Stały użytkownik forum
Posty: 91
Rejestracja: 2012-06-02, 03:43
Lokalizacja: Polska

Re: HiLink API Huawei - Dyskusja

Postautor: Przmus » 2018-09-05, 08:57

Sorry za późną odpowiedź. Na pewno odwiedzasz adres: https://192.168.8.1/html/quicksetup.html ?
Jeśli masz inny to w skrypcie trzeba zmienić wedle uznania.
http / https też ma znaczenie.
Ja to robiłem na szybko bo potrzebowałem tylko do jednej operacji, więc nie kładłem nacicku na szczegóły czy wygląd kodu.

tinware
Początkujący użytkownik forum
Posty: 8
Rejestracja: 2018-10-23, 23:38

Re: HiLink API Huawei - Dyskusja

Postautor: tinware » 2019-03-10, 22:42

VipeRsan, jestem pod wrażeniem Twojego artykułu - dzięki serdeczne!

U mnie dziś dwa tematy z E3372h-153.


1. Przekierowanie webservera zawsze na lokalny adres modemu

W pliku:
    /app/webroot/WebApp/common/config/webserver/config.xml
...zmieniłem:

Kod: Zaznacz cały

<main_page>/html/index.html</main_page>

...na:

Kod: Zaznacz cały

<main_page>/index.html</main_page>



Utworzyłem nowy plik:
    /app/webroot/WebApp/common/index.html
...i wpisałem do niego:

Kod: Zaznacz cały

<a href="html/index.html">Next...</a>



Wchodząc z lokalnego adresu...
    192.168.8.1
...zostaje przekierowany na adres...
    192.168.8.1/index.html
...i jest ok


Wchodząc z zewnętrznego adresu
    X.X.X.X
...zostaje przekierowany na adres...
    192.168.8.1/index.html?url=X.X.X.X
...i to nie jest ok!


Mam NATowaną sięć VPN, w której modem 192.168.8.1 przyjmuje w niej inny adres np. 10.0.8.1.
Pomijam oczywiście serie przekierowań w JavaScript, dlatego stworzyłem sobie stronę 192.168.8.1/index.html
Z tego co sprawdziłem, za to przekierowanie odpowiedzialny jest WebServer na modemie.
Jak można zmienić, aby faktycznie robił przekierowanie na "/index.html", zamiast na "192.168.8.1/index.html".



2. Przekierowanie każdego requesta na adres WebUI modemu gdy nie ma Internetu

Gdy podłączamy modem pod USB od razu dostajemy informację - i to jest problem:
Obrazek

Gdy podczas korzystania z Internetu transfer danych zostanie nagle wyłączony, wszystkie strony www przekierowują się na adres modemu - to jest problem.
Obrazek

Przykładowo jak podłącze dwa modemy pod komputer, jeden 192.168.7.1/24, na drugi 192.168.8.1/24 wyłączę transfer danych, to zamiast wychodzić na świat przez pierwszy modem, każdy adres z sieci publicznej przekierowuje mnie na 192.168.8.1 - bez sensu.
Jak można pozbyć się tych przekierowań i automatycznego uruchamiania się przeglądarki ze stroną modemu?

m4jor
Początkujący użytkownik forum
Posty: 5
Rejestracja: 2019-10-12, 12:10

Re: HiLink API Huawei - Dyskusja

Postautor: m4jor » 2019-10-12, 12:59

Cześć mam modowany soft w huawei e3372s-153 HiLink
chcę dograć opcję DDNS, obecnie w WebGui wyskakuje mi błąd
100002 - brak wsparcia w firmware lub błędny adres API
jeśli chodzi o umiejętności progrmaistyczne to nie są za rewelacyjne, soft zmieniony ADB jest
w jaki sposób mogę dograć moduł DDNS?
będę wdzięczny za pomoc!


Wróć do „Modemy GSM”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości