Prichádzajúce UDP spracovat ako HTTP requesty

Sekcia: Konfigurácia 28.01.2023 | 11:53
Avatar marioffsk   Používateľ

Ahojte,

mal by som prosbu o radu, ako by som dokazal docielit nasledovne:

- mam zariadenie (tasmota zigbee koordinator) ktore vie posielat data cez ethernet (upd - syslog), a prijimat cez HTTP - mam server s dietpi a s nainstalovanym Lighttpd a PHP - oba su na rovnakej sieti

Tieto data ktore prichadzaju zo zariadenia na server cez UDP (napr. port 514, resp. da sa nastavit hociaky) na server by som chcel spracovavat v PHPecku. Rovnako budem zariadeniu posielat data cez HTTP pomocou PHP (toto funguje).

Vedel by som nejak co nejjednoduchsie nastavit Lighttpd aby pocuval na danom porte, a ked pridu data, tieto nejak podsunut cez HTTP do PHP na spracovanie? Ideal tak aby nemusela bezat nejaka ina dalsia sluzba, ktora to bude sprostredkovavat, aby to bolo co najjednoduchsie.

Resp. nejaky iny navrh ako to poriesit?

Dakujem

    • RE: Prichádzajúce UDP spracovat ako HTTP requesty 28.01.2023 | 14:02
      Avatar Richard Antix  Používateľ

      Ahoj,

      ja som skúšal akurát riešenie cez Tcl/Tk. Skript, ktorý by počúval na nejakom UDP porte a to čo príde, dával na STDOUT, alebo do súboru, nie je nejako náročný. Z hlavy to neviem, lebo sú to roky, ale šlo by to pohľadať.

      PHP neovládam a neviem, či sa dá čítať nejako jednoducho z STDIN.

      Tiež netcat by mal dokázať podobné.

    • RE: Prichádzajúce UDP spracovat ako HTTP requesty 30.01.2023 | 16:21
      Avatar lime Debian 3, Red Hat 6, Fedora Core 3  Používateľ

      Tu mas nieco v Perle, si to poupravuj, komunikacia klient server ;)

      Prejdite z modrej obrazovky k linuxu :))
      • RE: Prichádzajúce UDP spracovat ako HTTP requesty 30.01.2023 | 16:43
        Avatar Richard Antix  Používateľ

        <joke>

        Perl – The only language that looks the same before and after RSA encryption.

        </joke>

    • RE: Prichádzajúce UDP spracovat ako HTTP requesty 30.01.2023 | 18:14
      Avatar kormidelnik   Používateľ

      syslog server vie zapisovat do suboru aj do databazy. Precitat data PHPkom nie je ziadny problem.

      • RE: Prichádzajúce UDP spracovat ako HTTP requesty 31.01.2023 | 14:41
        Avatar bluesundown   Používateľ

        toto riesenie sa mi zda rozumne.

        • RE: Prichádzajúce UDP spracovat ako HTTP requesty 02.02.2023 | 10:18
          Avatar kormidelnik   Používateľ

          tu je pekny navod ako to rozchodit.

          https://aacable.wordpress.com/2017/11/10/centralized-syslog-ng-logging-to-mysql-db/

    • RE: Prichádzajúce UDP spracovat ako HTTP requesty 01.02.2023 | 10:36
      Avatar Richard Antix  Používateľ

      Tak použitie netcat je jednoduché, práve som to otestoval na svojom PC v kancelárii a Raspberry Pi, pripojenom v tej istej sieti.

       

      Z RPi posielam cez UDP pomocou:

      echo `date` > /dev/udp/192.168.1.102/8888

      kde 192.168.1.102 je IP adresa môjho PC, 8888 je port, na ktorom počúva netcat v PC,  a ktorý musí byť povolený vo firewalle.

       

      A teda v PC beží:

       

      nc -u -l -k -p 8888 > prijate.txt

       

    • RE: Prichádzajúce UDP spracovat ako HTTP requesty 01.02.2023 | 11:02
      Avatar paldopice   Používateľ

      Ak som spravne pochopil, tak chces posielat data zo zariadenia pomocou syslogu? Ehm... Ved ok. Ale potom si musis napisat vlastny server, ktory bude vediet spracovavat syslog spravy (ale tie maju pevnu strukturu, takze by to nemal byt problem). Alebo mozes pouzit klasicky syslog, ktory bude tieto logy ukladat do samostatneho suboru a ten potom dalej spracovavat. Tu ale moze byt problem, pretoze napr. rsyslog nepodporuje multi-line sprava, zatial co syslog-ng ano. Alebo dalsia moznost je tiez pouzit syslog, ale (ako uz bolo spomenute), spravy ukladat do db. Ale neviem, ake by to malo +- voci ukladaniu do suboru.

      Cez lighttpd tie spravy nespracujes, uz len kvoli tomu, ze syslog pouziva udp protokol (ano, podporuje aj tcp, ale je otazka, ci to tvoje zriadenie podporuje). A aj keby si pouzil tcp, tak samozrejme syslog a http su uplne rozdielne protokoly, takze si tym nepomozes.

      Takze v konecnom dosledku je tento smer slepa ulicka.

      A dalsia vec, udp je stateless protokol, negarantuje dorucenie paketov, ich poradie atd...