rtty: Add package
authorJianhui Zhao <redacted>
Thu, 18 Jan 2018 10:07:14 +0000 (18:07 +0800)
committerYousong Zhou <redacted>
Tue, 23 Jan 2018 07:24:36 +0000 (15:24 +0800)
A reverse proxy WebTTY. It is composed of the client and the server.

Signed-off-by: Jianhui Zhao <redacted>
libs/libuwsc/Makefile [new file with mode: 0755]
utils/rtty/Makefile [new file with mode: 0755]
utils/rtty/files/rtty.config [new file with mode: 0755]
utils/rtty/files/rtty.init [new file with mode: 0644]

diff --git a/libs/libuwsc/Makefile b/libs/libuwsc/Makefile
new file mode 100755 (executable)
index 0000000..981887d
--- /dev/null
@@ -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))
diff --git a/utils/rtty/Makefile b/utils/rtty/Makefile
new file mode 100755 (executable)
index 0000000..a04f584
--- /dev/null
@@ -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))
+
diff --git a/utils/rtty/files/rtty.config b/utils/rtty/files/rtty.config
new file mode 100755 (executable)
index 0000000..8e7123a
--- /dev/null
@@ -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 (file)
index 0000000..ab3ba13
--- /dev/null
@@ -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
+}
+
git clone https://git.99rst.org/PROJECT