Hej,

Próbuję trochę na partyzanta dodać obsługę kompresji h264 do ffmpeg na OpenWrt 19.07 który sobie sam buduję.
W /feeds/packages/multimedia/ffmpeg/makefile zmeiniłem wszystkie DISABLE na ENABLE w liniach 508-512:

508,512c508,512
< $(call FFMPEG_DISABLE,decoder,$(FFMPEG_PATENTED_DECODERS)) \
< $(call FFMPEG_DISABLE,encoder,$(FFMPEG_PATENTED_ENCODERS)) \
< $(call FFMPEG_DISABLE,muxer,$(FFMPEG_PATENTED_MUXERS)) \
< $(call FFMPEG_DISABLE,demuxer,$(FFMPEG_PATENTED_DEMUXERS)) \
< $(call FFMPEG_DISABLE,parser,$(FFMPEG_PATENTED_PARSERS))) \
---
> $(call FFMPEG_ENABLE,decoder,$(FFMPEG_PATENTED_DECODERS)) \
> $(call FFMPEG_ENABLE,encoder,$(FFMPEG_PATENTED_ENCODERS)) \
> $(call FFMPEG_ENABLE,muxer,$(FFMPEG_PATENTED_MUXERS)) \
> $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_PATENTED_DEMUXERS)) \
> $(call FFMPEG_ENABLE,parser,$(FFMPEG_PATENTED_PARSERS))) \

I to dało radę tylko dla kamer IP, które jak się okazało musiały mieć kompresję hardware, natomiast teraz próbuję się z kamerami analogowym CVBS i AHD i tutaj z moich poszukiwań wychodzi że muszę mieć kompresję software'ową na pokładzie. Mocy na NanoPi nie zabraknie do tego, tylko pytanie jak to dodać do ffmpeg?

Cześć,
Potrzebuję przenieść politykę sieciową dotyczącą VPN z OpenWrt 19.07 na 23.05. Jest tam przejście z iptables na nftables. Na 19.07 moje reguły w pliku firewall.user wyglądały następująco:

iptables -A INPUT  -t mangle -i pptp-VPN -d 10.100.202.0/22 -p tcp  --dport 22 -j MARK --set-mark 1
iptables -A INPUT  -t mangle -i pptp-VPN -d 10.100.202.0/22 -p tcp  --dport 8080 -j MARK --set-mark 1
iptables -A INPUT  -t mangle -i pptp-VPN -d 10.100.202.0/22 -p tcp  --dport 8443 -j MARK --set-mark 1

iptables -A OUTPUT  -t mangle -o 3g-GSM -s 10.100.202.0/22 -p tcp --sport 22 -j MARK --set-mark 1
iptables -A OUTPUT  -t mangle -o 3g-GSM -s 10.100.202.0/22 -p tcp --sport 8080 -j MARK --set-mark 1
iptables -A OUTPUT  -t mangle -o 3g-GSM -s 10.100.202.0/22 -p tcp --sport 8443 -j MARK --set-mark 1

iptables -A FORWARD  -t mangle -i pptp-VPN -d 192.168.1.100/32  -p tcp  --dport 22 -j MARK --set-mark 1
iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.100/32 --sport 22 -j MARK --set-mark 1
iptables -A FORWARD  -t mangle -i pptp-VPN -d 192.168.1.101/32  -p tcp  --dport 22 -j MARK --set-mark 1
iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.101/32 --sport 22 -j MARK --set-mark 1

Aby je odwzorować w nftables utworzyłem plik /etc/nftables.d/custom.nft:

table inet custom {
    chain prerouting {
        type filter hook prerouting priority mangle;
        ip saddr 192.168.1.100/32 tcp sport 22 mark set 1
        ip saddr 192.168.1.101/32 tcp sport 22 mark set 1
    }

    chain input {
        type filter hook input priority mangle;
        iifname "pptp-VPN" ip daddr 10.100.202.0/22 tcp dport 22 mark set 1
        iifname "pptp-VPN" ip daddr 10.100.202.0/22 tcp dport 8080 mark set 1
        iifname "pptp-VPN" ip daddr 10.100.202.0/22 tcp dport 8443 mark set 1
    }

    chain output {
        type filter hook output priority mangle;
        oifname "3g-GSM" ip saddr 10.100.202.0/22 tcp sport 22 mark set 1
        oifname "3g-GSM" ip saddr 10.100.202.0/22 tcp sport 8080 mark set 1
        oifname "3g-GSM" ip saddr 10.100.202.0/22 tcp sport 8443 mark set 1
    }

    chain forward {
        type filter hook forward priority mangle;
        iifname "pptp-VPN" ip daddr 192.168.1.100/32 tcp dport 22 mark set 1
        iifname "pptp-VPN" ip daddr 192.168.1.101/32 tcp dport 22 mark set 1
    }
}

Kiedy próbuję wykonać restart firewalla dostaję errory odnośnie syntaxa:

root@OpenWrt:/# /etc/init.d/firewall restart
In file included from /dev/stdin:23:2-33:
/etc/nftables.d/custom.nft:1:1-5: Error: syntax error, unexpected table
table inet custom {
^^^^^
/dev/stdin:30:14-14: Error: syntax error, unexpected '{', expecting string or last
        chain input {
                    ^
/dev/stdin:31:3-6: Error: syntax error, unexpected type
                type filter hook input priority filter; policy accept;
                ^^^^
/dev/stdin:31:43-48: Error: syntax error, unexpected policy
                type filter hook input priority filter; policy accept;
                                                        ^^^^^^
/dev/stdin:33:3-9: Error: syntax error, unexpected iifname
                iifname "lo" accept comment "!fw4: Accept traffic from loopback"
                ^^^^^^^
/dev/stdin:35:6-10: Error: syntax error, unexpected state, expecting timeout or expectation or helper
                ct state established,related accept comment "!fw4: Allow inbound established and related flows"
                   ^^^^^
/dev/stdin:36:3-5: Error: syntax error, unexpected tcp
                tcp flags & (fin | syn | rst | ack) == syn jump syn_flood comment "!fw4: Rate limit TCP syn packets"
                ^^^
/dev/stdin:37:3-9: Error: syntax error, unexpected iifname
                iifname "br-lan" jump input_lan comment "!fw4: Handle lan IPv4/IPv6 input traffic"
                ^^^^^^^
/dev/stdin:38:3-9: Error: syntax error, unexpected iifname
                iifname "l2tp-VPN" jump input_vpn comment "!fw4: Handle vpn IPv4/IPv6 input traffic"
                ^^^^^^^
/dev/stdin:39:2-2: Error: syntax error, unexpected '}'
        }
        ^
The rendered ruleset contains errors, not doing firewall restart.

Próbuję w takim razie wykonać to samo ręcznie z terminala i dostaję błędy dotyczące nieznanego symbolu "3g-GSM":

root@OpenWrt:/# nft add table inet custom
root@OpenWrt:/#
root@OpenWrt:/# nft add chain inet custom prerouting { type filter hook prerouti
ng priority mangle \; }
root@OpenWrt:/# nft add chain inet custom input { type filter hook input priorit
y mangle \; }
root@OpenWrt:/# nft add chain inet custom output { type filter hook output prior
ity mangle \; }
root@OpenWrt:/# nft add chain inet custom forward { type filter hook forward pri
ority mangle \; }
root@OpenWrt:/# nft add rule inet custom prerouting ip saddr 192.168.1.100/32 tc
p sport 22 mark set 1
net custom prerouting ip saddr 192.168.1.101/32 tcp sport 22 mark set 1
root@OpenWrt:/# nft add rule inet custom prerouting ip saddr 192.168.1.101/32 tc
p sport 22 mark set 1
root@OpenWrt:/# nft add rule inet custom input iifname "pptp-VPN" ip daddr 10.10
0.202.0/22 tcp dport 22 mark set 1
ft add rule inet custom input iifname "pptp-VPN" ip daddr 10.100.202.0/22 tcp dport 8080 mark set 1
nft add ruroot@OpenWrt:/# nft add rule inet custom input iifname "pptp-VPN" ip daddr 10.10
0.202.0/22 tcp dport 8080 mark set 1
p-VPN" ip daddr 10.100.202.0/22 tcp dport 8443 mark set 1
root@OpenWrt:/# nft add rule inet custom input iifname "pptp-VPN" ip daddr 10.10
0.202.0/22 tcp dport 8443 mark set 1
root@OpenWrt:/# nft add rule inet custom output oifname "3g-GSM" ip saddr 10.100
.202.0/22 tcp sport 22 mark set 1
 add rule inet custom output oifname "3g-GSM" ip saddr 10.100.202.0/22 tcp sport 8080 mark set 1
nft adError: No symbol type information
add rule inet custom output oifname 3g-GSM ip saddr 10.100.202.0/22 tcp sport 22 mark set 1
                                     ^^^^^
root@OpenWrt:/# nft add rule inet custom output oifname "3g-GSM" ip saddr 10.100
.202.0/22 tcp sport 8080 mark set 1
 "3g-GSM" ip saddr 10.100.202.0/22 tcp sport 8443 mark set 1
Error: No symbol type information
add rule inet custom output oifname 3g-GSM ip saddr 10.100.202.0/22 tcp sport 8080 mark set 1
                                     ^^^^^
root@OpenWrt:/# nft add rule inet custom output oifname "3g-GSM" ip saddr 10.100
.202.0/22 tcp sport 8443 mark set 1
Error: No symbol type information
add rule inet custom output oifname 3g-GSM ip saddr 10.100.202.0/22 tcp sport 8443 mark set 1

A taki interfejs jest w systemie:

root@OpenWrt:/# ifconfig
3g-GSM    Link encap:Point-to-Point Protocol
          XXX
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:630 errors:0 dropped:0 overruns:0 frame:0
          TX packets:910 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:76906 (75.1 KiB)  TX bytes:85502 (83.4 KiB)

br-lan    Link encap:Ethernet  HWaddr 8A:4D:AE:14:61:82
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fd29:49c2:4265::1/60 Scope:Global
          inet6 addr: fe80::884d:aeff:fe14:6182/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1045 errors:0 dropped:0 overruns:0 frame:0
          TX packets:734 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:107925 (105.3 KiB)  TX bytes:127243 (124.2 KiB)

eth0      Link encap:Ethernet  HWaddr 8A:4D:AE:14:61:82
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1047 errors:0 dropped:0 overruns:0 frame:0
          TX packets:736 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:122687 (119.8 KiB)  TX bytes:127375 (124.3 KiB)
          Interrupt:42

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1329 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:98895 (96.5 KiB)  TX bytes:98895 (96.5 KiB)
config interface 'GSM'
        option proto '3g'
        option device '/dev/ttyUSB5'
        option service 'umts'
        option ipv6 'auto'

Co jeszcze mogę zrobić żeby wychwycić co jest nie tak?

Aktualnie Makefile wygląda tak:

#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=python3-pyinotify
PKG_VERSION:=0.9.6
PKG_RELEASE:=1

PYPI_NAME:=pyinotify
PKG_HASH:=9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4

PKG_MAINTAINER:=Gerald Kerma <gandalf@gk2.net>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING

PYTHON_FEED_DIR=$(TOPDIR)/feeds/packages/lang/python

include $(PYTHON_FEED_DIR)/pypi.mk
include $(INCLUDE_DIR)/package.mk
include $(PYTHON_FEED_DIR)/python3-package.mk

define Package/python3-pyinotify
  SUBMENU:=Python
  SECTION:=lang
  CATEGORY:=Languages
  TITLE:=Linux filesystem events monitoring
  URL:=https://github.com/seb-m/pyinotify
  DEPENDS:= +python3-light \
  +python3-ctypes \
  +python3-logging
endef

define Package/python3-pyinotify/description
  Pyinotify is a Python module for monitoring filesystems changes.
endef

$(eval $(call Py3Package,python3-pyinotify))
$(eval $(call BuildPackage,python3-pyinotify))

I przy kompilacji wybucha w ten sposób:

touch /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6/.built
touch /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6/.built_check
CFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -iremap/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6:pyinotify-0.9.6 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro  -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/include -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/include -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/usr/include -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/include/fortify -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/include " CXXFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -iremap/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6:pyinotify-0.9.6 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro  -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/include -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/include -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/usr/include -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/include/fortify -I/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/include " LDFLAGS="-L/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/lib -L/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/lib -L/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/usr/lib -L/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-7.5.0_musl_eabi/lib -znow -zrelro " make -j1 -C /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6/. AR="arm-openwrt-linux-muslgnueabi-gcc-ar" AS="arm-openwrt-linux-muslgnueabi-gcc -c -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -iremap/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6:pyinotify-0.9.6 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=arm-openwrt-linux-muslgnueabi-ld NM="arm-openwrt-linux-muslgnueabi-gcc-nm" CC="arm-openwrt-linux-muslgnueabi-gcc" GCC="arm-openwrt-linux-muslgnueabi-gcc" CXX="arm-openwrt-linux-muslgnueabi-g++" RANLIB="arm-openwrt-linux-muslgnueabi-gcc-ranlib" STRIP=arm-openwrt-linux-muslgnueabi-strip OBJCOPY=arm-openwrt-linux-muslgnueabi-objcopy OBJDUMP=arm-openwrt-linux-muslgnueabi-objdump SIZE=arm-openwrt-linux-muslgnueabi-size CROSS="arm-openwrt-linux-muslgnueabi-" ARCH="arm" ;
make[4]: Entering directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6'
make[4]: *** No targets specified and no makefile found.  Stop.
make[4]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6'
make[3]: *** [Makefile:44: /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pypi/pyinotify-0.9.6/.built] Error 2
make[3]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/package/python3-pyinotify'
time: package/python3-pyinotify/compile#0.22#0.06#0.28
make[2]: *** [package/Makefile:113: package/python3-pyinotify/compile] Error 2
make[2]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt'
make[1]: *** [package/Makefile:107: /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt'
make: *** [/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/include/toplevel.mk:227: world] Błąd 2
make[3]: Entering directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/package/python3-pyinotify'
Makefile:39: WARNING: skipping python3-pyinotify -- package has no install section
Makefile:21: ../python3-package.mk: No such file or directory
make[3]: *** No rule to make target '../python3-package.mk'.  Stop.
make[3]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/package/python3-pyinotify'
time: package/python3-pyinotify/compile#0.11#0.03#0.14
make[2]: *** [package/Makefile:113: package/python3-pyinotify/compile] Error 2
make[2]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt'
make[1]: *** [package/Makefile:107: /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt'
make: *** [/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/include/toplevel.mk:227: world] Błąd 2
Cezary napisał/a:

Dodaj mu to TITLE to define Package

Tam już był TITLE:

define Package/python3-pyinotify
  SUBMENU:=Python
  SECTION:=lang
  CATEGORY:=Languages
  TITLE:=Linux filesystem events monitoring
  URL:=https://github.com/seb-m/pyinotify
  DEPENDS:= +python3-light \
  +python3-ctypes \
  +python3-logging
endef
Cezary napisał/a:

Czy próbowałeś pobrać Makefile od 21.02 z tym pakietem, tak bez zmian wrzucić i spróbować skompilować?

Tak, i wtedy wyrzuca błędy przy kompilacji:

time: package/network/utils/tcpdump/full/compile#0.20#0.09#0.28
make[3]: Entering directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/package/python3-pyinotify'
Makefile:39: WARNING: skipping python3-pyinotify -- package has no install section
Makefile:40: *** Package/python3-pyinotify-src is missing the TITLE field.  Stop.
make[3]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/package/python3-pyinotify'
time: package/python3-pyinotify/compile#0.13#0.03#0.15
make[2]: *** [package/Makefile:113: package/python3-pyinotify/compile] Error 2
make[2]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt'
make[1]: *** [package/Makefile:107: /media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt'
make: *** [/media/pcx/Dysk_2_Linux/nanopi_neo_openwrt/openwrt/include/toplevel.mk:227: world] Błąd 2

Cześć,

Próbuję dodać moduł python3-pyinotify do OpenWrt 19.07 podczas budowania systemu. Aktualizacja feed'ów nie dodaje go do listy dostępnych modułów Python3 (z tego co znalazłem to wchodzi on dopiero na OpenWrt 22.03). Próbowałem wzorować się na Makefile który znalazłem tutaj: https://github.com/openwrt/packages/blo … y/Makefile

Aktualnie treść mojego Makefile który umieściłem w katalogu "package/python3-pyinotify" wygląda tak:

include $(TOPDIR)/rules.mk

PKG_NAME:=python3-pyinotify
PKG_VERSION:=0.9.6
PKG_RELEASE:=1

PYPI_NAME:=pyinotify
PKG_SOURCE:=$(PYPI_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/$(PYPI_NAME)
PKG_HASH:=9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PYPI_NAME)-$(PKG_VERSION)

PKG_BUILD_DEPENDS:=python3

PYTHON_FEED_DIR=$(TOPDIR)/feeds/packages/lang/python

include $(INCLUDE_DIR)/package.mk
include $(PYTHON_FEED_DIR)/python3-package.mk

PYTHON3:=/usr/bin/python3

define Package/python3-pyinotify
  SUBMENU:=Python
  SECTION:=lang
  CATEGORY:=Languages
  TITLE:=pyinotify for Python3
  URL:=https://pypi.org/project/pyinotify/
  DEPENDS:=+python3
endef

define Package/python3-pyinotify/description
pyinotify provides Python bindings for the inotify Linux kernel subsystem.
endef

define Build/Compile
    cd $(PKG_BUILD_DIR); $(PYTHON3) setup.py build
endef

define Package/python3-pyinotify/install
    $(info PYTHON3_PKG_DIR=$(PYTHON3_PKG_DIR))
    $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)
    $(CP) $(PKG_BUILD_DIR)/python3/pyinotify.py $(1)$(PYTHON3_PKG_DIR)/
endef

$(eval $(call BuildPackage,python3-pyinotify))

Efekt jest taki że mam możliwość zaznaczyć go w menuconfig, obraz buduje się bez błędów, moduł jest potem możliwy do zaimportowania w konsoli Python3, natomiast polecenie pip3 list nie wyświetla go jakby nie było go w systemie. Z tego co wyczytałem to prawdopodobnie brakuje mu *.dist-info  i/lub *.egg-info.

ls /usr/lib/python3.*/site-packages/pyinotify*
/usr/lib/python3.7/site-packages/pyinotify.py 

Na hoście na którym buduję (Ubuntu) w build_dir pojawia się tylko jeden plik pyinotify.py

ls build_dir/target-*/root-*/usr/lib/python3.*/site-packages
ADS1x15                            inotify                            pyserial-3.4-py3.7.egg-info
ADS1x15_ADC-1.2.2-py3.7.egg-info   inotify-0.2.10.dist-info           python_dateutil-2.8.0-py3.7.egg-info
certifi                            inotify-0.2.10-py3.7.egg-info      README.txt
certifi-2019.11.28-py3.7.egg-info  mysqlclient-1.3.14-py3.7.egg-info  requests
chardet                            _mysql.cpython-37.so               requests-2.23.0-py3.7.egg-info
chardet-3.0.4-py3.7.egg-info       MySQLdb                            serial
configobj                          _mysql_exceptions.pyc              setuptools
configobj-5.0.9.dist-info          nose                               setuptools-47.1.0.dist-info
curl                               nose-1.3.7.dist-info               shapely
dateutil                           pcf8574_sg24                       Shapely-1.7.1.dist-info
docutils                           pcf8574_sg24-1.2.2-py3.7.egg-info  Shapely-1.7.1-py3.7.egg-info
docutils-0.14-py3.7.egg-info       pip                                six-1.13.0-py3.7.egg-info
easy_install.pyc                   pip-22.0.4.dist-info               six.pyc
geographiclib                      pkg_resources                      smbus-1.1-py3.7.egg-info
geographiclib-1.50.dist-info       pycurl-7.43.0.3-py3.7.egg-info     smbus2
geographiclib-1.52.dist-info       pycurl.cpython-37.so               smbus2-0.4.2.dist-info
geopy                              pyinotify.py                       smbus.cpython-37.so
geopy-2.0.0.dist-info              pynmea                             urllib3
idna                               pynmea-0.6.0.dist-info             urllib3-1.25.10-py3.7.egg-info
idna-2.9-py3.7.egg-info            pynmea-0.6.0-py3.7.egg-info        validate

Co jeszcze mogę spróbować zrobić żeby dodać ten moduł w pełni?

Ok, niech pullują z repo, ale co w przypadku scenariusza kiedy aktualizacja jakiegoś skryptu wymaga też:
1. Zmiana adresu jakiegoś interfejsu w konfiguracji sieci
2. Zmiana reguł iptables w firewall.user
3. Dodanie startu serwisu/skryptu w odpowiednim miejscu w skrypcie rc.local
4. Doinstalowanie modułu opkg lub pip

Tego chyba samym repo nie rozwiążę?

Skrypty aktualnie mogą się różnić wersją między urządzeniami. W momencie kiedy robię aktualizację do stanu dajmy na to 1.0.1, to chciałbym aby skrypty zostały zaktualizowane/podmienione do odpowiedniej wersji dla tego stanu.

Cześć,

Mierzę się z problemem zarządzania aktualizacjami konfiguracji sieci, skryptu rc.local, modułów opkg i customowych skryptów/aplikacji na wielu urządzeniach z systemem OpenWrt. Szukam odpowiedniego narzędzia/zestawu narzędzi do optymalnego zarządzania i administrowania takimi urządzeniami.

Aktualnie z moich poszukiwań najlepiej wypada Ansible. Pytanie czy to dobry strzał, może jest coś lepszego, a może Ansible nie do końca sprawdza się w pracy z OpenWrt? Jakie są best practice przy takim zagadnieniu?

Aktualnie stan jest taki, że urządzenia są na różnym etapie aktualności jeżeli chodzi o te pliki. Czy przed wdrożeniem używania narzędzia takiego jak Ansible najlepiej byłoby najpierw wyrównać ręcznie poziom aktualności aby wszystkie urządzenia startowały z tego samego stanu przy kolejnych aktualizacjach, czy nie jest to wymagane?

11

(7 odpowiedzi, napisanych Oprogramowanie / Software)

Ewentualnie który z tych protokołów byłby lepszy jeżeli chodzi o minimalizacje zużycia danych i odporność na utratę szyfrowania podczas zrywania połączenia przy słabym sygnale?

  • OpenVPN

  • WireGuard

  • IKEv2

  • L2TP

12

(7 odpowiedzi, napisanych Oprogramowanie / Software)

Czy skasowanie tego "mppe required,no40,no56,stateless" niesie ze sobą jakieś konsekwencje? Np. w postaci tego że dane nie będą już w żaden sposób szyfrowane i będą leciały plain textem, czy jest jeszcze jakiś dodatkowy mechanizm, który mimo tego że wyłączymy mppe to i tak chroni dane które lecą po VPN?

Okazuje się że nie uda mi się wykorzystać tego modułu na OpenWrt 19.07.

/usr/lib/python3.7/site-packages/keyboard/_nixkeyboard.py:110: UserWarning: Failed to create a device file using `uinput` module. Sending of events may be limited or unavailable depending on plugged-in devices.
  device = aggregate_devices('kbd')
Traceback (most recent call last):
  File "keyboard_reader.py", line 25, in <module>
    keyboard.hook(on_key_event)
  File "/usr/lib/python3.7/site-packages/keyboard/__init__.py", line 461, in hook
    append(callback)
  File "/usr/lib/python3.7/site-packages/keyboard/_generic.py", line 67, in add_handler
    self.start_if_necessary()
  File "/usr/lib/python3.7/site-packages/keyboard/_generic.py", line 35, in start_if_necessary
    self.init()
  File "/usr/lib/python3.7/site-packages/keyboard/__init__.py", line 196, in init
    _os_keyboard.init()
  File "/usr/lib/python3.7/site-packages/keyboard/_nixkeyboard.py", line 114, in init
    build_tables()
  File "/usr/lib/python3.7/site-packages/keyboard/_nixkeyboard.py", line 73, in build_tables
    dump = check_output(['dumpkeys', '--keys-only'], universal_newlines=True)
  File "/usr/lib/python3.7/subprocess.py", line 411, in check_output
  File "/usr/lib/python3.7/subprocess.py", line 488, in run
  File "/usr/lib/python3.7/subprocess.py", line 800, in __init__
  File "/usr/lib/python3.7/subprocess.py", line 1551, in _execute_child
FileNotFoundError: [Errno 2] No such file or directory: 'dumpkeys': 'dumpkeys'

Brakuje mu narzędzia "dumpkeys", zawierać go powinien moduł "kbd", ale nie znajduje mi go w repozytorium dla mojej wersji OpenWrt. Nie wiem czy próbować to jakoś obejść czy jest jeszcze jakaś sprawdzona alternatywa?

Chodzi mi o to żebym mógł z poziomu skryptu zapuścić jakiegoś loopa/watchera żeby dowiedzieć się że ktoś naciska jakąś np. sekwencje i wykonać coś w skrypcie zależnie od sekwencji. Czyli pytanie czy jest jakiś prosty moduł pythonowy który wejdzie mi na OpenWrt 19.07 i ogarnie mi takie monitorowanie inputu z klawiatury?

Hej

Mam klawiaturę bankomatową "Chesen Electronics Corp. PS/2 Keyboard+Mouse Adapter". Z tego co zdążyłem zauważyć to montuje się ona jako "/dev/input/event0".

root@OpenWrt:~# cat /proc/bus/input/devices
I: Bus=0003 Vendor=0a81 Product=0205 Version=0110
N: Name="CHESEN PS2 to USB Converter"
P: Phys=usb-1c1d400.usb-1/input0
S: Sysfs=/devices/platform/soc/1c1d400.usb/usb6/6-1/6-1:1.0/0003:0A81:0205.0003/input/input2
U: Uniq=
H: Handlers=sysrq kbd event0 
B: PROP=0
B: EV=120013
B: KEY=10000 7 ff980000 7ff febeffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7

Jak w prosty sposób ograć czytanie z tej klawiatury za pomocą skryptu napisanego w Python 3? System jakiego używam to OpenWrt 19.07. Przy wyświetlaniu tego pliku za pomocą "cat" w terminalu dostaję krzaczki.

Wyjaśniło się, powodem był walnięty switch, po wymianie na inny pakiety chodzą normalnie

Max jest to 5m

Są spięte po kablu, więc odległość chyba nie ma tu znaczenia

Cześć,

Mierzę się z problemem utworzenia topologii dla dwóch urządzeń z systemem OpenWrt. Oba urządzenia w założeniu mają działać sobie oddzielnie i w szczególnych przypadkach będą łączone razem poprzez switch. Opiszę teraz poniżej środowiska sieciowe obu urządzeń:

Urządzenie 1:
Interfejs LAN (usb0): 192.168.2.1/24
Interfejs dodatkowej podsieci (eth0): 192.168.3.1/24
Interfejs WAN (modem)
W dodatkowej podsieci na eth0 jest podpięty host z dzierżawą statyczną. W dodatkowej podsieci jest działający DHCP.

Urządzenie 2:
Interfejs LAN (usb0): 192.168.2.1/24
Interfejs dodatkowej podsieci (eth0): 192.168.3.2/24
Interfejs WAN (modem)
W dodatkowej podsieci na eth0 jest podpięty host z statycznym adresem IP. W dodatkowej podsieci DHCP jest wyłączony.

Przy połączeniu urządzeń razem, ich hosty powinny nadal mieć te same WAN'y które miały oddzielnie, czyli host z U2 nie wychodzi WAN'em U1 i odwrotnie. Aktualnie sytuacja wygląda tak że pakiety wymieniane pomiędzy hostami urządzeń są rwane. Czy mogę prosić o wsparcie co tutaj jest nie tak? Czy urządzenia/routery "kłócą" się o pakiety i stąd to rwanie?

20

(7 odpowiedzi, napisanych Oprogramowanie / Software)

taka jest treść przywołanego pliku:

noipdefault
noauth
nobsdcomp
nodeflate
idle 0
mppe required,no40,no56,stateless
maxfail 0

Czyli po zmianie by było tak ( skasowałem "mppe required,no40,no56,stateless" ):

noipdefault
noauth
nobsdcomp
nodeflate
idle 0
maxfail 0

21

(7 odpowiedzi, napisanych Oprogramowanie / Software)

Witajcie,
Mam na urządzeniu ( wyjście na świat przez modem GSM ) uruchomionego klienta VPN pptp. Tak wiem ,że to protokół już uznawany za mało bezpieczny jednak pomińmy ten wątek poproszę. Zauważyłem, że ma on uruchomione coś takiego co nazywa się :
Encoding: MPPE 128 statelss.
Zauważyłem, że połączenie staje się niestabilne przy słabym sygnale/zasięgu w sieci komórkowej. Wyczytałem gdzieś na forum, że kiedy to kodowanie jest włączone VPN staje się niestabilny ze względu na ryzyko utracenia pojedynczych pakietów. Są propozycje, aby wyłączyć to kodowanie i może to wyglądać jak niżej.

This is part of the init script, so you need to modify it:

# Server
sed -i -r -e "/^(require|refuse)-/s/^/#/" /etc/ppp/options.pptpd
sed -i -e "/^\s*echo.*mppe\s/s/^/#/" /etc/init.d/pptpd
/etc/init.d/pptpd restart

# Client
sed -i -e "/^mppe\s/s/^/#/" /etc/ppp/options.pptp
ifup vpn

Żródło: https://forum.openwrt.org/t/pptp-on-uns … tion/88143

1. Co o tym sądzicie?
2. Nie mogę odnaleźć pliku: /etc/init.d/pptpd  . Poproszę o podpowiedź. OpenWRT 19.07

22

(1 odpowiedzi, napisanych Sprzęt / Hardware)

Witajcie,
OpenWRT19.07
Chcę dodać obsługę modemu EC200U-EU.
W systemie widać go jako:

Bus 001 Device 004: ID 2c7c:0901 Quectel Wireless Solutions Co., Ltd.

Poszukałem nieco i jedyna podpowiedź jaką znalazłem jest taka:
https://forums.quectel.com/t/ec200u-cn- … inux/21761

You don’t need to change the kernel code, the device you see has nothing to do with Quectel.
You need to manually add your modem ID’s to the standard option driver:
# echo "2c7c 0901" > /sys/bus/usb-serial/drivers/option1/new_id
then check with cat /sys/kernel/debug/usb/devices
Please do not use pictures.

Faktycznie, po dodaniu
# echo "2c7c 0901" > /sys/bus/usb-serial/drivers/option1/new_id
widać w systemie aż 6 nowych interfejsów:

[  238.927708] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[  238.942137] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[  238.956497] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[  238.970618] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
[  238.985443] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB4
[  238.999877] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB5
[  239.014572] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB6

Niestety po restarcie należy ponownie dodać komendą :
# echo "2c7c 0901" > /sys/bus/usb-serial/drivers/option1/new_id
ponieważ nie widać tych portów.
Jak zrobić, żeby to na stałe "zostało" w systemie?
Wydaje mi się, że tych interfejsów pojawia się zbyt dużo jak na modem...ale może się mylę

23

(3 odpowiedzi, napisanych Oprogramowanie / Software)

Dziękuję za wsparcie.
Mimo wszystko chciałbym zgłębić zagadnienie. Jak w OpenWRT sprawdzić jaki jest aktualny DNS ?
Musi to być jakiś mechanizm dynamiczny... muszą wchodzić DNS-y od operatora komórkowego, skoro wyjmę kartę sim od jednego, włożę od innego in DNS-y zmieniają się.
Edit: tak to działa w przypadku poprawnej propagacji DNS-ów.
Tam gdzie muszę pingować po numerkach ( typu ping 8.8.8.8. ) sądzę że te DNS-y nie propagują się wogóle.

24

(3 odpowiedzi, napisanych Oprogramowanie / Software)

Spotkałem się z bardzo ciekawym zagadnieniem. Dla modemów: MC8775, MC8780  mam następujące symptomy:
Mniej więcej połowa, czyli kilka po zamontowaniu w urządzenie z OpenWRT umożliwia poprawne pingowanie po domenie , czyli np.: ping www.onet.pl.
Druga połowa nie potrafi tego zrobić po domenie. Tylko jeżeli zastosuję adres bezpośredni typu ping 8.8.8.8, to pingi się wykonają poprawnie.  Gdzie może tkwić problem? Domyślam się, że gdzieś w DNS-ach, ale jak to możliwe i gdzie szukać rozwiązania problemu?

25

(1 odpowiedzi, napisanych Sprzęt / Hardware)

Witajcie,
Mój wpis podzielę na dwie części:

1)
Jakiś czas temu próbowałem zaadoptować modem MC7355 1N1FY, ale bez pozytywnego rezultatu. Mimo, że przestawiłem jego USB, aby montowały się w systemie ttyUSBX (x3 lub 4 ), to dialer OpenWRT nie był w stanie się zalogować do sieci.
Podłączyłem pod komputer z Ubuntu i dialer Ubuntu był w stanie nawiązać połączenie ale tylko w GPRS. Modem wydaje się ciekawy, ponieważ oferuje LTE CAT3 plus GPS, ale ... no właśnie. Czy Ktoś miał pozytywne doświadczenia z tym modelem? Czy udało się zweryfikować działanie GPS?  Jak to wszystko poprawnie zrobić?

2)
Drugie pytanie dotyczy bardzo starych modemów:
ERISSCON DW5530 F3507g    KM266
ERISSCON DW5540 F3607gw H039R
ERISSCON DW5550 F5521GW 2XGNJ
MC8355

Planuję "postawić" urządzenie, które od czasu do czasu musi przesłać małą ilość danych, więc 2G wystarczy. Czy ktoś miał pozytywne doświadczenie z w/w modelami pod OpenWRT. Są one dostępne na bardzo znanym portalu aukcyjnym w bardzo dobrej cenie typu kilka złotych. Ktoś testował GPS?