Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 5 kwi 2025, o 23:17


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 9 lut 2015, o 08:53 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2013
    Posty: 246
    Pomógł: 0

    Eksperymentuję właśnie z szyfrowaniem komunikacji za pomocą OpenSSL.
    Napisałem własnego daemona, który nasłuchuje na określonym porcie.

    Mogę się z nim połączyć za pomocą ncata i przesyłać dane w obydwie strony:

    Kod:
    ncat --ssl localhost <port>


    Problem w tym, że jest to możliwe tylko wtedy, gdy w poleceniu użyję nazwy "localhost". W przypadku zastosowania numeru IP efekt jest następujący:

    Kod:
    ncat --ssl <numer IP><port>
    Ncat: Connection refused.


    Podobny komunikat dostaję przy próbie połączenia się z zewnątrz, za pomocą androidowego SSL clienta.

    I żeby nie było: a iptables jest dodana odpowiednia formułka:

    Kod:
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:<port> state NEW


    Na tej samej maszynie pracuje również serwer https, z analogiczną formułką dla portu 443 i nie ma najmniejszego problemu, żeby się do niego dowołać z domowej sieci...

    Co może być nie tak?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2015, o 10:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2013
    Posty: 568
    Zbananowany użytkownik

    Pomógł: 31

    Sprawdź neststatem jak nadsłuchuje.

    Składnia: [ Pobierz ] [ Ukryj ]
    język bash
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i wklej tu.

    _________________
    Und schreien

    Spring
    Erlöse mich
    Spring
    ...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2015, o 10:20 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2013
    Posty: 246
    Pomógł: 0

    squeez napisał(a):
    Czy masz twój demon słucha na wszystkich interfejsach?


    Hmm... Powinien. Nie widzę nigdzie ograniczenia w kodzie, chociaż z programowaniem Linuksa mam do czynienia od stosunkowo niedawna i w większości opieram się na przykładach z dokumentacji systemu i sieciowych tutoriali. Nie widzę jednak nigdzie w kodzie czegoś, co mogłoby blokować połączenia na innych interfejsach niż lo.

    [/quote]Jaki to numer portu oraz demon na prawach roota czy usera?[/quote]

    Port 32001.
    Próbowałem zarówno na prawach usera jak i roota. Efekt zawsze taki sam.
    Cały kod źródłowy wygląda następująco:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2015, o 15:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2013
    Posty: 568
    Zbananowany użytkownik

    Pomógł: 31

    Na którym interfejsie demon nadsłuchuje? na eth czy na lo?

    _________________
    Und schreien

    Spring
    Erlöse mich
    Spring
    ...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2015, o 17:26 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2013
    Posty: 246
    Pomógł: 0

    PROTON napisał(a):
    Na którym interfejsie demon nadsłuchuje? na eth czy na lo?


    Hmm... Pytanie zabrzmi głupio, ale jak to sprawdzić?
    Do tej pory byłem przekonany, że serwer przypisany do określonego socketu słucha na każdym dostępnym interfejsie i dopiero firewall blokuje niepożądane połączenia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2015, o 18:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2013
    Posty: 568
    Zbananowany użytkownik

    Pomógł: 31

    Sprawdzisz to tym:

    Składnia: [ Pobierz ] [ Ukryj ]
    język bash
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Und schreien

    Spring
    Erlöse mich
    Spring
    ...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lut 2015, o 19:46 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2013
    Posty: 246
    Pomógł: 0

    PROTON napisał(a):
    Sprawdzisz to tym:

    Składnia: [ Pobierz ] [ Ukryj ]
    język bash
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Hmm...

    Kod:
    tcp        0      0 localhost:32001         *:*                     LISTEN


    Co zrobić, żeby słuchał także na eth0 i generalnie wszystkich innych interfejsach? O tym decyduje jakaś wartość podana w kodzie źródłowym?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lut 2015, o 09:31 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 maja 2013
    Posty: 568
    Zbananowany użytkownik

    Pomógł: 31

    Ja polecam: "Beej's Guide to Network Programming"

    http://beej.us/guide/bgnet/

    Gdzieś w sieci jest wersja przetłumaczona na PL.

    ------------------------ [ Dodano po: 8 minutach ]

    Długo nie musiałem szukać:
    http://cpp0x.pl/kursy/Kurs-WinSock-C++/271
    http://www.asawicki.info/Mirror/Beej_s% ... /bgnet.pdf

    _________________
    Und schreien

    Spring
    Erlöse mich
    Spring
    ...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lut 2015, o 21:21 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2013
    Posty: 246
    Pomógł: 0

    Bardzo dziękuję za pomoc. Przerobiłem kod, podpierając się podanymi przykładami i podesłanym kursem.
    Przy okazji zauważyłem błąd przy SSL_accept() - instrukcja warunkowa sprawdzała wystąpienie niepoprawnej wartości, przez co przeoczane było wystąpienie błędu.

    Podczas normalnego połączenia program działa poprawnie. Zauważyłem jednak, że zaczyna się dziać coś dziwnego, gdy próbuję połączyć się z nim normalnie, przez telnet (bez SSL). Połączenie zostaje zestawone, po wysłaniu pierwszego komunikatu dostaję informację o błędzie z połączeniem SSL, ale samo połączenie nie zostaje przerwane - mogę dalej wklepywać tekst w kliencie telnmetu - musze dopiero sam zamknąć połączenie od strony klienta. Na tym jednak nie koniec - serwer przestaje po tym przyjmować kolejne połączenia (connection timeout).
    Ktoś ma jakiś pomysł odnośnie tego, czego brakuje?

    Na chwilę obecną kod wygląda tak:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO