add luci-app-lucky

This commit is contained in:
Pdboy Sir 2024-02-27 15:06:30 +08:00 committed by GitHub
parent e9900f6165
commit 991214c285
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 625 additions and 0 deletions

137
luci-app-lucky/README.md Normal file
View File

@ -0,0 +1,137 @@
### 访问数:[![](https://visitor-badge.glitch.me/badge?page_id=sirpdboy-visitor-badge)] [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
欢迎来到sirpdboy的源码仓库
=
# Lucky(大吉)
本项目是 ([Lucky](https://github.com/gdy666/lucky)) 在 OpenWrt 上的移植。
luci-app-lucky 动态域名ddns-go服务,替代socat主要用于公网IPv6 tcp/udp转内网ipv4,http/https反向代理
[![若部分图片无法正常显示,请挂上机场浏览或点这里到末尾看修复教程](https://visitor-badge.glitch.me/badge?page_id=sirpdboy-visitor-badge)](#解决-github-网页上图片显示失败的问题) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
[luci-app-lucky Lucky(大吉)](https://github.com/sirpdboy/luci-app-lucky)
======================
**认真阅读完毕** 本页面,本页面包含注意事项和如何使用。
## 功能说明:
### Lucky(大吉)
#### 动态域名ddns-go服务,替代socat主要用于公网IPv6 tcp/udp转内网ipv4,http/https反向代理
#### 在LUCI中可以配置访问端口和增加是否允许外网访问设置。
<!-- TOC -->
- [lucky](#lucky)
- [使用方法](#使用方法)
- [说明](#说明)
- [问题](#常见问题)
- [界面](#界面)
- [捐助](#捐助)
<!-- /TOC -->
## 使用方法
- 将luci-app-lucky添加至 LEDE/OpenWRT 源码的方法。
### 下载源码方法:
```Brach
# 下载源码
git clone https://github.com/sirpdboy/luci-app-lucky.git package/lucky
make menuconfig
```
### 配置菜单
```Brach
make menuconfig
# 找到 LuCI -> Applications, 选择 luci-app-lucky, 保存后退出。
```
### 编译
```Brach
# 编译固件
make package/lucky/luci-app-lucky/compile V=s
```
## 说明
- 源码来源https://github.com/gdy666/lucky
- 源码来源https://github.com/sirpdboy/luci-app-lucky
- 你可以随意使用其中的源码,但请注明出处。
## 常见问题
- 不同于防火墙端口转发规则,不要设置没有用上的端口,会增加内存的使用.
- 小米路由 ipv4 类型的80和443端口被占用,但只设置监听tcp6(ipv6)的80/443端口转发规则完全没问题.
- 如果需要使用白名单模式,请根据自身需求打开外网访问后台管理页面开关.
- 转发规则启用异常,端口转发没有生效时请登录后台查看日志.
- 开启外网访问可以直接修改配置文件中的"AllowInternetaccess": false, 将false改为true
## 界面
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/lucky1.jpg)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/lucky2.jpg)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/lucky3.jpg)
## 使用与授权相关说明
- 本人开源的所有源码,任何引用需注明本处出处,如需修改二次发布必告之本人,未经许可不得做于任何商用用途。
# My other project
- 网络速度测试 https://github.com/sirpdboy/NetSpeedTest
- 定时设置插件 : https://github.com/sirpdboy/luci-app-autotimeset
- 关机功能插件 : https://github.com/sirpdboy/luci-app-poweroffdevice
- opentopd主题 : https://github.com/sirpdboy/luci-theme-opentopd
- kucat 主题: https://github.com/sirpdboy/luci-theme-kucat
- 家长控制: https://github.com/sirpdboy/luci-theme-parentcontrol
- 系统高级设置 : https://github.com/sirpdboy/luci-app-advanced
- ddns-go动态域名: https://github.com/sirpdboy/luci-app-ddns-go
- 进阶设置(系统高级设置+主题设置kucat/agron/opentopd: https://github.com/sirpdboy/luci-app-advancedplus
- 设置向导: https://github.com/sirpdboy/luci-app-wizard
- 分区扩容: https://github.com/sirpdboy/luci-app-partexp
- lukcy大吉: https://github.com/sirpdboy/luci-app-lukcy
## 捐助
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明3.jpg)
| <img src="https://img.shields.io/badge/-支付宝-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了😂"/> | <img src="https://img.shields.io/badge/-微信-F5F5F5.svg" height="25" alt="图飞了😂" href="#赞助支持本项目-"/> |
| :-----------------: | :-------------: |
|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) |
<a href="#readme">
<img src="https://img.shields.io/badge/-返回顶部-orange.svg" alt="图飞了😂" title="返回顶部" align="right"/>
</a>

View File

@ -0,0 +1,24 @@
# SPDX-License-Identifier: GPL-3.0-only
#
# Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-lucky
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-lucky
PKG_VERSION:=1.2.0
PKG_RELEASE:=8
LUCI_TITLE:=LuCI Support for Dynamic lucky Client
LUCI_DEPENDS:=+lucky
LUCI_PKGARCH:=all
define Package/$(PKG_NAME)/conffiles
/etc/config/lucky
/etc/lucky/lucky.conf
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -0,0 +1,54 @@
-- Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-lucky
-- Licensed to the public under the Apache License 2.0.
local SYS = require "luci.sys"
module("luci.controller.lucky", package.seeall)
function index()
local e=entry({"admin", "services", "lucky"}, alias("admin", "services", "lucky", "setting"),_("Lucky"), 57)
e.dependent=false
e.acl_depends={ "luci-app-lucky" }
entry({"admin", "services", "lucky", "setting"}, cbi("lucky"), _("Base Setting"), 20).leaf=true
entry({"admin", "services", "lucky", "lucky"}, template("lucky"), _("Lucky Control panel"), 30).leaf = true
entry({"admin", "services", "lucky_status"}, call("lucky_status"))
entry({"admin", "services", "lucky_config"}, call("lucky_config"))
end
function lucky_config()
local e = { }
local luckyInfo = SYS.exec("/usr/bin/lucky -info")
if (luckyInfo~=nil)
then
local configObj = ConfigureObj()
if (configObj~=nil)
then
e.BaseConfigure = configObj["BaseConfigure"]
end
end
e.luckyArch = SYS.exec("/usr/bin/luckyarch")
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
function lucky_status()
local e = { }
e.status = SYS.call("pgrep -f 'lucky -c' >/dev/null") == 0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
function trim(s)
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
function ConfigureObj()
configPath = trim(luci.sys.exec("uci get lucky.@lucky[0].configdir"))
local configContent = luci.sys.exec("lucky -baseConfInfo -cd "..configPath)
configObj = luci.jsonc.parse(trim(configContent))
return configObj
end

View File

@ -0,0 +1,33 @@
-- Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-lucky
local m, s ,o
m = Map("lucky")
m.title = translate("Lucky")
m.description = translate("ipv4/ipv6 portforward,ddns,reverseproxy proxy,wake on lan,IOT and more,Default username and password 666")
m:section(SimpleSection).template = "lucky_status"
s = m:section(TypedSection, "lucky", translate("Global Settings"))
s.addremove=false
s.anonymous=true
o = s:option(Flag,"enabled",translate("Enable"))
o.default=0
o = s:option(Value, "port",translate("Set the Lucky access port"))
o.datatype = "uinteger"
o.default = 16601
o = s:option(Value, "safe",translate("Safe entrance"),translate("The panel management portal can only be set to log in to the panel through the specified security portal, such as:/lucky"))
o = s:option( Value, "configdir", translate("Config dir path"),translate("The path to store the config file"))
o.placeholder = "/etc/lucky"
o.default="/etc/lucky"
m.apply_on_parse = true
m.on_after_apply = function(self,map)
luci.sys.exec("/etc/init.d/lucky restart")
end
return m

View File

@ -0,0 +1,51 @@
<%#
Copyright 2021-2024 sirpdboy Wich <herboy2008@gmail.com>
https://github.com/sirpdboy/luci-app-lucky
Licensed to the public under the Apache License 2.0.
-%>
<%
local running = luci.sys.exec("pidof lucky | awk -F ' ' '{print $1}'")
%>
<%+header%>
<script type="text/javascript">//<![CDATA[
var URL = ""
XHR.get('<%=url([[admin]], [[services]], [[lucky_config]])%>', null,
function (x, d) {
if (d) {
URL = "http://" + window.location.hostname + ":" + d.BaseConfigure.AdminWebListenPort;
if (d.BaseConfigure.SafeURL != undefined) {
URL += d.BaseConfigure.SafeURL;
console.log("test" + URL)
document.getElementById("luckyiframe").src = URL
document.getElementById("luckyiframe").height = document.documentElement.clientHeight;
window.onresize = function(){
document.getElementById("luckyiframe").height = document.documentElement.clientHeight;
}
}
}
}
);
//]]></script>
<div class="cbi-map">
<% if tonumber(running) ~= nil then %>
<iframe id="luckyiframe" style="width: 100%; min-height: 580px; border: none; border-radius: .375rem;box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px;"><br/><em style=\"color:red\">
<p ><em><%:The Lucky service is not running.%></em></p>
</iframe>
</div>
<% else %>
<style>.running{text-align: center;} .running>h1{font-size: 25px; color: #333; margin: 1rem;} .running>p{ font-size: 1.2rem; color: #8391a2; margin: 1rem;}</style>
<div class="running">
<img src="data:image/svg+xml;base64,PCEtLSBHZW5lcmF0ZWQgYnkgSWNvTW9vbi5pbyAtLT4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMjQiIGhlaWdodD0iMTAyNCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+Cjx0aXRsZT48L3RpdGxlPgo8ZyBpZD0iaWNvbW9vbi1pZ25vcmUiPgo8L2c+CjxwYXRoIGZpbGw9IiNkZjAwMDAiIGQ9Ik05NDIuNDIxIDIzNC42MjRsODAuODExLTgwLjgxMS0xNTMuMDQ1LTE1My4wNDUtODAuODExIDgwLjgxMWMtNzkuOTU3LTUxLjYyNy0xNzUuMTQ3LTgxLjU3OS0yNzcuMzc2LTgxLjU3OS0yODIuNzUyIDAtNTEyIDIyOS4yNDgtNTEyIDUxMiAwIDEwMi4yMjkgMjkuOTUyIDE5Ny40MTkgODEuNTc5IDI3Ny4zNzZsLTgwLjgxMSA4MC44MTEgMTUzLjA0NSAxNTMuMDQ1IDgwLjgxMS04MC44MTFjNzkuOTU3IDUxLjYyNyAxNzUuMTQ3IDgxLjU3OSAyNzcuMzc2IDgxLjU3OSAyODIuNzUyIDAgNTEyLTIyOS4yNDggNTEyLTUxMiAwLTEwMi4yMjktMjkuOTUyLTE5Ny40MTktODEuNTc5LTI3Ny4zNzZ6TTE5NC45NDQgNTEyYzAtMTc1LjEwNCAxNDEuOTUyLTMxNy4wNTYgMzE3LjA1Ni0zMTcuMDU2IDQ4IDAgOTMuNDgzIDEwLjY2NyAxMzQuMjI5IDI5Ljc4MWwtNDIxLjU0NyA0MjEuNTQ3Yy0xOS4wNzItNDAuNzg5LTI5LjczOS04Ni4yNzItMjkuNzM5LTEzNC4yNzJ6TTUxMiA4MjkuMDU2Yy00OCAwLTkzLjQ4My0xMC42NjctMTM0LjIyOS0yOS43ODFsNDIxLjU0Ny00MjEuNTQ3YzE5LjA3MiA0MC43ODkgMjkuNzgxIDg2LjI3MiAyOS43ODEgMTM0LjIyOS0wLjA0MyAxNzUuMTQ3LTE0MS45OTUgMzE3LjA5OS0zMTcuMDk5IDMxNy4wOTl6Ij48L3BhdGg+Cjwvc3ZnPgo=" height="100">
<h1><font color="color:red"><%:The Lucky service is not running.%></font></h1>
<p><%:Please enable the Lucky service%></p>
</div>
<% end -%>
</div>
<%+footer%>

View File

@ -0,0 +1,50 @@
<%
protocol="http://"
%>
<script type="text/javascript">//<![CDATA[
var URL = ""
var URLSAFE = ""
function Luckyconfig() {
XHR.get('<%=url([[admin]], [[services]], [[lucky_config]])%>', null,
function (x, d) {
if (d) {
URL = "http://" + window.location.hostname + ":" + d.BaseConfigure.AdminWebListenPort;
URLSAFE = "http://" + window.location.hostname + ":" + d.BaseConfigure.AdminWebListenPort;
if (d.BaseConfigure.SafeURL != undefined) {
URL += d.BaseConfigure.SafeURL;
}
}
}
);
}
XHR.poll(3, '<%=url([[admin]], [[services]], [[lucky_status]])%>', null,
function(x, d) {
var tb = document.getElementById('lucky_status');
if (d && tb)
{
if (d.status)
{
Luckyconfig()
tb.innerHTML = '<em><b style=\"color:green\"><%:The Lucky service is running.%></b></em>';
tb.innerHTML +='<em> <br/><br/><%:Click the new page to open Lucky%> </em>';
tb.innerHTML += "<input class=\"cbi-button cbi-button-reload \" type=\"button\" value=\" "+ URL + "\" onclick=\"window.open('"+URL+"')\"/>";
}
else
{
tb.innerHTML = '<em style=\"color:red\"><%:The Lucky service is not running.%></em><br/>';
}
}
}
);
//]]></script>
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
<fieldset class="cbi-section">
<legend><%:Lucky Status%></legend>
<p id="lucky_status">
<em><%:Collecting data...%></em>
</p>
</fieldset>

View File

@ -0,0 +1,57 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Config dir path"
msgstr "配置文件夹位置"
msgid "Lucky"
msgstr "Lucky大吉"
msgid "Lucky Control panel"
msgstr "Lucky操作台"
msgid "ipv4/ipv6 portforward,ddns,reverseproxy proxy,wake on lan,IOT and more,Default username and password 666"
msgstr "IPv4/IPv6端口转发,动态域名服务,http/https反向代理默认用户名密码666.."
msgid "Running state"
msgstr "运行状态"
msgid "The Lucky service is running."
msgstr "大吉服务已启动"
msgid "The Lucky service is not running."
msgstr "大吉服务未启动"
msgid "Please enable the Lucky service"
msgstr "请将Lucky服务启用"
msgid "Lucky Status"
msgstr "大吉服务状态"
msgid "Collecting data..."
msgstr "收集数据..."
msgid "Set the Lucky access port"
msgstr "设置访问端口"
msgid "Lucky configuration file"
msgstr "Lucky 配置文件"
msgid "The path to store the config file"
msgstr "存放配置文件的位置"
msgid "</br>For specific usage, see:"
msgstr "</br>具体使用方法参见:"
msgid "Base Setting"
msgstr "基本设置"
msgid "Click the new page to open Lucky"
msgstr "点击新页面打开大吉"
msgid "Safe entrance"
msgstr "安全入口"
msgid "The panel management portal can only be set to log in to the panel through the specified security portal, such as:/lucky"
msgstr "面板管理入口,设置后只能通过指定安全入口登录面板,如: /lucky"

View File

@ -0,0 +1,57 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Config dir path"
msgstr "配置文件夹位置"
msgid "Lucky"
msgstr "Lucky大吉"
msgid "Lucky Control panel"
msgstr "Lucky操作台"
msgid "ipv4/ipv6 portforward,ddns,reverseproxy proxy,wake on lan,IOT and more,Default username and password 666"
msgstr "IPv4/IPv6端口转发,动态域名服务,http/https反向代理默认用户名密码666.."
msgid "Running state"
msgstr "运行状态"
msgid "The Lucky service is running."
msgstr "大吉服务已启动"
msgid "The Lucky service is not running."
msgstr "大吉服务未启动"
msgid "Please enable the Lucky service"
msgstr "请将Lucky服务启用"
msgid "Lucky Status"
msgstr "大吉服务状态"
msgid "Collecting data..."
msgstr "收集数据..."
msgid "Set the Lucky access port"
msgstr "设置访问端口"
msgid "Lucky configuration file"
msgstr "Lucky 配置文件"
msgid "The path to store the config file"
msgstr "存放配置文件的位置"
msgid "</br>For specific usage, see:"
msgstr "</br>具体使用方法参见:"
msgid "Base Setting"
msgstr "基本设置"
msgid "Click the new page to open Lucky"
msgstr "点击新页面打开大吉"
msgid "Safe entrance"
msgstr "安全入口"
msgid "The panel management portal can only be set to log in to the panel through the specified security portal, such as:/lucky"
msgstr "面板管理入口,设置后只能通过指定安全入口登录面板,如: /lucky"

View File

@ -0,0 +1,5 @@
config lucky 'lucky'
option logger '1'
option port '16601'
option configdir '/etc/lucky'
option enabled '0'

View File

@ -0,0 +1,59 @@
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-lucky
# This file is part of lucky .
#
# This is free software, licensed under the Apache License, Version 2.0 .
USE_PROCD=1
START=99
STOP=15
CONF="lucky"
PROG=/usr/bin/lucky
DEFAULT_DIR='/etc/config/lucky.daji/'
SET_TZ=""
get_tz()
{
[ -e "/etc/localtime" ] && return
for tzfile in /etc/TZ /var/etc/TZ
do
[ -e "$tzfile" ] || continue
tz="$(cat $tzfile 2>/dev/null)"
done
[ -z "$tz" ] && return
SET_TZ=$tz
}
get_config() {
config_get_bool enabled $1 enabled 1
config_get_bool logger $1 logger 1
config_get port $1 port 16601
config_get SafeURL $1 safe
config_get configdir $1 configdir $DEFAULT_DIR
}
start_service() {
config_load "$CONF"
config_foreach get_config "$CONF"
[ "x$enabled" = "x1" ] || return 1
[ ! -d $configdir ] && mkdir -p $configdir 2>/dev/null
[ $port != 16601 ] && $(which lucky) -setconf -key AdminWebListenPort -value $port -cd $configdir
[ $SafeURL ] && $(which lucky) -setconf -key SafeURL -value $SafeURL -cd $configdir
procd_open_instance
get_tz
[[ -z "$SET_TZ" ]] || procd_set_param env TZ="$SET_TZ"
procd_set_param command $PROG -cd "$configdir"
[ "x$logger" == x1 ] && procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger lucky
}

View File

@ -0,0 +1,11 @@
#!/bin/sh
uci -q batch <<-EOF >/dev/null
delete ucitrack.@lucky[-1]
add ucitrack lucky
set ucitrack.@lucky[-1].init=lucky
commit ucitrack
EOF
[[ -f /etc/config/lucky ]] || echo "config lucky 'lucky' " > /etc/config/lucky
rm -rf /tmp/luci*
exit 0

View File

@ -0,0 +1,11 @@
{
"luci-app-lucky": {
"description": "Grant UCI access for luci-app-lucky",
"read": {
"uci": [ "lucky" ]
},
"write": {
"uci": [ "lucky" ]
}
}
}

View File

@ -0,0 +1,76 @@
# SPDX-License-Identifier: GPL-3.0-only
#
# Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com>
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
PKG_NAME:=lucky
PKG_VERSION:=2.5.3
PKG_RELEASE:=1
ifeq ($(ARCH),mipsel)
LUCKY_ARCH:=mipsle_softfloat
endif
ifeq ($(ARCH),mips)
LUCKY_ARCH:=mips_softfloat
endif
ifeq ($(ARCH),i386)
LUCKY_ARCH:=i386
endif
ifeq ($(ARCH),x86_64)
LUCKY_ARCH:=x86_64
endif
ifeq ($(ARCH),arm)
LUCKY_ARCH:=armv7
endif
ifeq ($(BOARD),bcm53xx)
LUCKY_ARCH:=armv6
ifeq ($(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))),)
LUCKY_ARCH:=armv5
endif
endif
ifeq ($(BOARD),kirkwood)
LUCKY_ARCH:=armv5
endif
ifeq ($(ARCH),aarch64)
LUCKY_ARCH:=arm64
endif
PKG_LICENSE:=GPL-3.0-only
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=GDY666 <gdy666@foxmail.com>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=3626928d4a45ae606856b834614e45997b5da235
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
TITLE:=Lucky dynamic domain name ddns-go service, socat,frp
DEPENDS:=@(i386||x86_64||arm||aarch64||mipsel||mips)
URL:=https://github.com/gdy666/lucky
endef
define Package/$(PKG_NAME)/description
Main functions of Lucky: dynamic domain name ddns-go service, socat,reverse proxy ,wake on lan
endef
define Build/Prepare
[ ! -f $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz ] && wget https://github.com/gdy666/lucky/releases/download/v$(PKG_VERSION)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz -O $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz
tar -xzvf $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz -C $(PKG_BUILD_DIR)
endef
define Build/Compile
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/lucky $(1)/usr/bin/lucky
endef
$(eval $(call BuildPackage,$(PKG_NAME)))