diff --git a/package/ctcgfw/gost/Makefile b/package/ctcgfw/gost/Makefile new file mode 100644 index 0000000000..1160826e0f --- /dev/null +++ b/package/ctcgfw/gost/Makefile @@ -0,0 +1,58 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=gost +PKG_VERSION:=2.11.0 +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/ginuerzh/gost.git +PKG_SOURCE_VERSION:=2c0e01a5dd3d2257527ee41867fefa4273efc380 +PKG_MAINTAINER:=[CTCGFW] Project OpenWrt + +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/ginuerzh/gost +GO_PKG_LDFLAGS:=-s -w + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/$(PKG_NAME) + SECTION:=net + CATEGORY:=Network + TITLE:=GO Simple Tunnel + URL:=https://github.com/ginuerzh/gost + DEPENDS:=$(GO_ARCH_DEPENDS) +endef + +define Package/$(PKG_NAME)/description + A simple security tunnel written in Golang +endef + +define Build/Prepare + tar -zxf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) --strip-components 1 +endef + +define Build/Configure +endef + +define Build/Compile + $(eval GO_PKG_BUILD_PKG:=$(GO_PKG)/cmd/gost) + $(call GoPackage/Build/Configure) + $(call GoPackage/Build/Compile) + $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/gost +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/gost $(1)/usr/bin/gost +endef + +$(eval $(call GoBinPackage,$(PKG_NAME))) +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/package/ctcgfw/luci-app-gost/Makefile b/package/ctcgfw/luci-app-gost/Makefile new file mode 100644 index 0000000000..2d940caee1 --- /dev/null +++ b/package/ctcgfw/luci-app-gost/Makefile @@ -0,0 +1,21 @@ +# Copyright (C) 2020 Openwrt.org +# +# This is a free software, use it under GNU General Public License v3.0. +# +# Created By [CTCGFW]Project-OpenWrt +# https://github.com/project-openwrt + +include $(TOPDIR)/rules.mk + +PKG_NAME:=luci-app-gost +PKG_VERSION:=1.0 +PKG_RELEASE:=1 +LUCI_TITLE:=LuCI support for Gost +LUCI_DEPENDS:=+gost +iptables +LUCI_PKGARCH:=all + +PKG_MAINTAINER:=[CTCGFW]Project-OpenWrt + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/ctcgfw/luci-app-gost/luasrc/controller/gost.lua b/package/ctcgfw/luci-app-gost/luasrc/controller/gost.lua new file mode 100644 index 0000000000..90f772336b --- /dev/null +++ b/package/ctcgfw/luci-app-gost/luasrc/controller/gost.lua @@ -0,0 +1,23 @@ +-- This is a free software, use it under GNU General Public License v3.0. +-- Created By [CTCGFW]Project OpenWRT +-- https://github.com/project-openwrt + +module("luci.controller.gost", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/gost") then + return + end + + local page + page = entry({"admin", "vpn", "gost"}, cbi("gost"), _("Gost"), 100) + page.dependent = true + entry({"admin", "vpn", "gost", "status"},call("act_status")).leaf=true +end + +function act_status() + local e={} + e.running=luci.sys.call("pgrep gost >/dev/null")==0 + luci.http.prepare_content("application/json") + luci.http.write_json(e) +end diff --git a/package/ctcgfw/luci-app-gost/luasrc/model/cbi/gost.lua b/package/ctcgfw/luci-app-gost/luasrc/model/cbi/gost.lua new file mode 100644 index 0000000000..0a4d53988f --- /dev/null +++ b/package/ctcgfw/luci-app-gost/luasrc/model/cbi/gost.lua @@ -0,0 +1,20 @@ +-- Created By [CTCGFW]Project-OpenWrt +-- https://github.com/project-openwrt + +mp = Map("gost", translate("Gost")) +mp.description = translate("A simple security tunnel written in Golang.") + +mp:section(SimpleSection).template = "gost/gost_status" + +s = mp:section(TypedSection, "gost") +s.anonymous=true +s.addremove=false + +enable = s:option(Flag, "enable", translate("Enable")) +enable.default = 0 +enable.rmempty = false + +run_command = s:option(Value, "run_command", translate("Command")) +run_command.rmempty = false + +return mp diff --git a/package/ctcgfw/luci-app-gost/luasrc/view/gost/gost_status.htm b/package/ctcgfw/luci-app-gost/luasrc/view/gost/gost_status.htm new file mode 100644 index 0000000000..9f2acf0864 --- /dev/null +++ b/package/ctcgfw/luci-app-gost/luasrc/view/gost/gost_status.htm @@ -0,0 +1,22 @@ + + +
diff --git a/package/ctcgfw/luci-app-gost/po/zh_Hans/gost.po b/package/ctcgfw/luci-app-gost/po/zh_Hans/gost.po new file mode 100644 index 0000000000..9ccabdeca5 --- /dev/null +++ b/package/ctcgfw/luci-app-gost/po/zh_Hans/gost.po @@ -0,0 +1,17 @@ +msgid "Gost" +msgstr "Gost" + +msgid "A simple security tunnel written in Golang." +msgstr "GO语言实现的安全隧道。" + +msgid "RUNNING" +msgstr "运行中" + +msgid "NOT RUNNING" +msgstr "未运行" + +msgid "Enable" +msgstr "启用" + +msgid "Command" +msgstr "命令" diff --git a/package/ctcgfw/luci-app-gost/root/etc/config/gost b/package/ctcgfw/luci-app-gost/root/etc/config/gost new file mode 100644 index 0000000000..6bea719670 --- /dev/null +++ b/package/ctcgfw/luci-app-gost/root/etc/config/gost @@ -0,0 +1,5 @@ + +config gost + option enable '0' + option run_command '' + diff --git a/package/ctcgfw/luci-app-gost/root/etc/init.d/gost b/package/ctcgfw/luci-app-gost/root/etc/init.d/gost new file mode 100755 index 0000000000..6a18bd3c3a --- /dev/null +++ b/package/ctcgfw/luci-app-gost/root/etc/init.d/gost @@ -0,0 +1,22 @@ +#!/bin/sh /etc/rc.common +# Created By [CTCGFW]Project OpenWRT +# https://github.com/project-openwrt + +START=80 +STOP=10 + +enable="$(uci get gost.@gost[0].enable)" +run_command="$(uci get gost.@gost[0].run_command)" + +start() +{ + stop + + [ "${enable}" -ne "1" ] && exit 0 + /usr/bin/gost ${run_command} & +} + +stop() +{ + killall -9 "gost" > "/dev/null" 2>&1 +} diff --git a/package/ctcgfw/luci-app-gost/root/etc/uci-defaults/gost b/package/ctcgfw/luci-app-gost/root/etc/uci-defaults/gost new file mode 100755 index 0000000000..e1ddf16fab --- /dev/null +++ b/package/ctcgfw/luci-app-gost/root/etc/uci-defaults/gost @@ -0,0 +1,11 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@gost[-1] + add ucitrack gost + set ucitrack.@gost[-1].init=gost + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0