From 8a7797d67af9b62a08bd66f6d860dd4b67bddc57 Mon Sep 17 00:00:00 2001 From: Jianhui Zhao Date: Thu, 18 Jan 2018 18:07:14 +0800 Subject: [PATCH] rtty: Add package A reverse proxy WebTTY. It is composed of the client and the server. Signed-off-by: Jianhui Zhao --- libs/libuwsc/Makefile | 82 +++++++++++++++++++++++++++++++ utils/rtty/Makefile | 93 ++++++++++++++++++++++++++++++++++++ utils/rtty/files/rtty.config | 12 +++++ utils/rtty/files/rtty.init | 58 ++++++++++++++++++++++ 4 files changed, 245 insertions(+) create mode 100755 libs/libuwsc/Makefile create mode 100755 utils/rtty/Makefile create mode 100755 utils/rtty/files/rtty.config create mode 100644 utils/rtty/files/rtty.init diff --git a/libs/libuwsc/Makefile b/libs/libuwsc/Makefile new file mode 100755 index 0000000000..981887db06 --- /dev/null +++ b/libs/libuwsc/Makefile @@ -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 + +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)) diff --git a/utils/rtty/Makefile b/utils/rtty/Makefile new file mode 100755 index 0000000000..a04f584b03 --- /dev/null +++ b/utils/rtty/Makefile @@ -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 + +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)) + diff --git a/utils/rtty/files/rtty.config b/utils/rtty/files/rtty.config new file mode 100755 index 0000000000..8e7123a9be --- /dev/null +++ b/utils/rtty/files/rtty.config @@ -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 diff --git a/utils/rtty/files/rtty.init b/utils/rtty/files/rtty.init new file mode 100644 index 0000000000..ab3ba131d4 --- /dev/null +++ b/utils/rtty/files/rtty.init @@ -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 +} +