A reverse proxy WebTTY. It is composed of the client and the server. Signed-off-by: Jianhui Zhao <jianhuizhao329@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,82 @@ | |||
# | |||
# Copyright (C) 2018 Jianhui Zhao | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=libuwsc | |||
PKG_VERSION:=1.1.0 | |||
PKG_RELEASE:=1 | |||
PKG_SOURCE_PROTO:=git | |||
PKG_SOURCE_VERSION:=v$(PKG_VERSION) | |||
PKG_SOURCE_URL=https://github.com/zhaojh329/libuwsc.git | |||
PKG_MIRROR_HASH:=4aada7e2941fb9f099869c9dc10ef6411f1c355c3b2f570011b91e42feffbfdd | |||
CMAKE_INSTALL:=1 | |||
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR) | |||
PKG_LICENSE:=GPL-3.0 | |||
PKG_LICENSE_FILES:=LICENSE | |||
PKG_MAINTAINER:=Jianhui Zhao <jianhuizhao329@gmail.com> | |||
include $(INCLUDE_DIR)/package.mk | |||
include $(INCLUDE_DIR)/cmake.mk | |||
define Package/libuwsc/default | |||
SECTION:=libs | |||
CATEGORY:=Libraries | |||
SUBMENU:=Networking | |||
TITLE:=Lightweight WebSocket client library | |||
DEPENDS:=+libubox | |||
endef | |||
define Package/libuwsc-nossl | |||
$(Package/libuwsc/default) | |||
TITLE += (NO SSL) | |||
VARIANT:=nossl | |||
endef | |||
define Package/libuwsc-openssl | |||
$(Package/libuwsc/default) | |||
TITLE += (openssl) | |||
DEPENDS += +libustream-openssl | |||
VARIANT:=openssl | |||
endef | |||
define Package/libuwsc-wolfssl | |||
$(Package/libuwsc/default) | |||
TITLE += (wolfssl) | |||
DEPENDS += +libustream-wolfssl | |||
VARIANT:=wolfssl | |||
endef | |||
define Package/libuwsc-mbedtls | |||
$(Package/libuwsc/default) | |||
TITLE += (mbedtls) | |||
DEPENDS += +libustream-mbedtls | |||
VARIANT:=mbedtls | |||
endef | |||
ifeq ($(BUILD_VARIANT),nossl) | |||
CMAKE_OPTIONS += -DUWSC_SSL_SUPPORT=off | |||
endif | |||
define Package/libuwsc/default/install | |||
$(INSTALL_DIR) $(1)/usr/lib/ | |||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libuwsc.so* $(1)/usr/lib/ | |||
endef | |||
Package/libuwsc-nossl/install = $(Package/libuwsc/default/install) | |||
Package/libuwsc-openssl/install = $(Package/libuwsc/default/install) | |||
Package/libuwsc-wolfssl/install = $(Package/libuwsc/default/install) | |||
Package/libuwsc-mbedtls/install = $(Package/libuwsc/default/install) | |||
$(eval $(call BuildPackage,libuwsc-nossl)) | |||
$(eval $(call BuildPackage,libuwsc-mbedtls)) | |||
$(eval $(call BuildPackage,libuwsc-wolfssl)) | |||
$(eval $(call BuildPackage,libuwsc-openssl)) |
@ -0,0 +1,93 @@ | |||
# | |||
# Copyright (C) 2018 Jianhui Zhao | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=rtty | |||
PKG_VERSION:=2.2.0 | |||
PKG_RELEASE:=1 | |||
PKG_SOURCE_PROTO:=git | |||
PKG_SOURCE_VERSION:=v$(PKG_VERSION) | |||
PKG_SOURCE_URL=https://github.com/zhaojh329/rtty.git | |||
PKG_MIRROR_HASH:=23a203351fdd47acfd16d3c3b3e3d51dd65a5d9e8ca89d4b1521d40c40616102 | |||
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR) | |||
PKG_LICENSE:=GPL-3.0 | |||
PKG_LICENSE_FILES:=LICENSE | |||
PKG_MAINTAINER:=Jianhui Zhao <jianhuizhao329@gmail.com> | |||
include $(INCLUDE_DIR)/package.mk | |||
include $(INCLUDE_DIR)/cmake.mk | |||
define Package/rtty/default | |||
SECTION:=utils | |||
CATEGORY:=Utilities | |||
SUBMENU:=Terminal | |||
TITLE:=A reverse proxy WebTTY | |||
DEPENDS:=+libblobmsg-json | |||
endef | |||
define Package/rtty/default/description | |||
A reverse proxy WebTTY. This is the client part running on devices to be managed. | |||
endef | |||
define Package/rtty-nossl | |||
$(Package/rtty/default) | |||
TITLE += (NO SSL) | |||
DEPENDS += +libuwsc-nossl | |||
VARIANT:=nossl | |||
CONFLICTS:=rtty-openssl rtty-wolfssl rtty-mbedtls | |||
endef | |||
define Package/rtty-openssl | |||
$(Package/rtty/default) | |||
TITLE += (openssl) | |||
DEPENDS += +libuwsc-openssl | |||
VARIANT:=openssl | |||
CONFLICTS:=rtty-wolfssl rtty-mbedtls | |||
endef | |||
define Package/rtty-wolfssl | |||
$(Package/rtty/default) | |||
TITLE += (wolfssl) | |||
DEPENDS += +libuwsc-wolfssl | |||
VARIANT:=wolfssl | |||
CONFLICTS:=rtty-mbedtls | |||
endef | |||
define Package/rtty-mbedtls | |||
$(Package/rtty/default) | |||
TITLE += (mbedtls) | |||
DEPENDS += +libuwsc-mbedtls | |||
VARIANT:=mbedtls | |||
endef | |||
Package/rtty-nossl/description = $(Package/rtty/default/description) | |||
Package/rtty-openssl/description = $(Package/rtty/default/description) | |||
Package/rtty-wolfssl/description = $(Package/rtty/default/description) | |||
Package/rtty-mbedtls/description = $(Package/rtty/default/description) | |||
define Package/rtty/default/install | |||
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/rtty $(1)/usr/sbin | |||
$(INSTALL_BIN) ./files/rtty.init $(1)/etc/init.d/rtty | |||
$(INSTALL_CONF) ./files/rtty.config $(1)/etc/config/rtty | |||
endef | |||
Package/rtty-nossl/install = $(Package/rtty/default/install) | |||
Package/rtty-openssl/install = $(Package/rtty/default/install) | |||
Package/rtty-wolfssl/install = $(Package/rtty/default/install) | |||
Package/rtty-mbedtls/install = $(Package/rtty/default/install) | |||
$(eval $(call BuildPackage,rtty-nossl)) | |||
$(eval $(call BuildPackage,rtty-mbedtls)) | |||
$(eval $(call BuildPackage,rtty-wolfssl)) | |||
$(eval $(call BuildPackage,rtty-openssl)) | |||
@ -0,0 +1,12 @@ | |||
# You must specify an interface or id, | |||
# If the id is not specified, RTTY will uses the MAC address | |||
# of the interface you specify as its ID, otherwise the id | |||
# you specify is used as its ID | |||
#config rtty | |||
# option interface 'lan' | |||
# option id 'My-Device' | |||
# option description 'Description of my device' | |||
# option host 'your-server-host' # Server host | |||
# option port '5912' # Server Port | |||
# option ssl 1 # Whether to use ssl |
@ -0,0 +1,58 @@ | |||
#!/bin/sh /etc/rc.common | |||
. /lib/functions/network.sh | |||
USE_PROCD=1 | |||
START=99 | |||
BIN=/usr/sbin/rtty | |||
start_rtty() { | |||
local cfg="$1" | |||
local interface ifname id description host port ssl | |||
uci_validate_section rtty rtty "${1}" \ | |||
'interface:uci("network", "@interface"):lan' \ | |||
'id:maxlength(63)' \ | |||
'description:maxlength(126)' \ | |||
'host:host' \ | |||
'port:port' \ | |||
'ssl:bool:0' | |||
[ $? -eq 1 ] && { | |||
echo "validation failed" >&2 | |||
return 1 | |||
} | |||
[ -n "$interface" ] && network_get_device ifname "$interface" | |||
[ -z "$ifname" -a -z "$id" ] && { | |||
echo "You must specify an interface or ID" >&2 | |||
return 1 | |||
} | |||
[ -z "$host" ] && { | |||
echo "host required" >&2 | |||
return 1 | |||
} | |||
[ -z "$port" ] && { | |||
echo "port required" >&2 | |||
return 1 | |||
} | |||
procd_open_instance | |||
procd_set_param command $BIN -h $host -p $port -a | |||
[ -n "$ifname" ] && procd_append_param command -i "$ifname" | |||
[ -n "$id" ] && procd_append_param command -I "$id" | |||
[ -n "$description" ] && procd_append_param command -d "$description" | |||
[ "$ssl" = "1" ] && procd_append_param command -s | |||
procd_set_param respawn | |||
procd_close_instance | |||
} | |||
start_service() { | |||
config_load rtty | |||
config_foreach start_rtty rtty | |||
} | |||