OpenClash icon indicating copy to clipboard operation
OpenClash copied to clipboard

[Feature] 求大佬指点,在编译openwrt系统阶段,就把openclash的内核打包下载和安装好的Makefile,从而不需要在编译好后的系统管理界面在单独上传内核。

Open JackyLeeGM opened this issue 1 year ago • 4 comments

Verify Steps

  • [X] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
  • [X] Latest 我已经使用最新 Dev 版本查看过,并不包含该功能特性或者还不完善
  • [X] Relevant 我知道 OpenClash 与 内核(Core)、控制面板(Dashboard)、在线订阅转换(Subconverter)等项目之间无直接关系,仅相互调用
  • [X] Definite 这确实是 OpenClash 应包含的特性
  • [ ] Contributors 我有能力协助 OpenClash 开发或完善此功能特性
  • [ ] Meaningless 我提交的是无意义的催促更新或修复请求

Describe the Feature

现在编好的openwrt中,openclash插件一直没有内核,每次都在luci管理界面上传,很麻烦,想从根源解决这个问题,但是一直搞不明白,希望大佬能分享可以实现的makefile!万分感激。

Describe Alternatives

include $(TOPDIR)/rules.mk

PKG_NAME:=luci-app-openclash PKG_VERSION:=0.46.014 PKG_RELEASE:=beta PKG_MAINTAINER:=vernesong https://github.com/vernesong/OpenClash

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/$(PKG_NAME)/config config PACKAGE_kmod-inet-diag default y if PACKAGE_$(PKG_NAME)

config PACKAGE_luci-compat
default y if PACKAGE_$(PKG_NAME)

config PACKAGE_kmod-nft-tproxy
default y if PACKAGE_firewall4

config PACKAGE_kmod-ipt-nat
default y if ! PACKAGE_firewall4

config PACKAGE_iptables-mod-tproxy
default y if ! PACKAGE_firewall4

config PACKAGE_iptables-mod-extra
default y if ! PACKAGE_firewall4

endef

define Package/$(PKG_NAME) CATEGORY:=LuCI SUBMENU:=3. Applications TITLE:=LuCI support for clash PKGARCH:=all DEPENDS:=+dnsmasq-full +coreutils +coreutils-nohup +bash +curl +ca-certificates +ipset +ip-full
+libcap +libcap-bin +ruby +ruby-yaml +kmod-tun +unzip MAINTAINER:=vernesong endef

define Package/$(PKG_NAME)/description A LuCI support for clash endef

define Build/Prepare $(CP) $(CURDIR)/root $(PKG_BUILD_DIR) $(CP) $(CURDIR)/luasrc $(PKG_BUILD_DIR) $(foreach po,$(wildcard ${CURDIR}/po/zh-cn/*.po),
po2lmo $(po) $(PKG_BUILD_DIR)/$(patsubst %.po,%.lmo,$(notdir $(po)));) sed -i "s/v0.00.00-beta/v$(PKG_VERSION)-beta/g" $(PKG_BUILD_DIR)/root/www/luci-static/resources/openclash/img/version.svg >/dev/null 2>&1 chmod 0755 $(PKG_BUILD_DIR)/root/etc/init.d/openclash chmod -R 0755 $(PKG_BUILD_DIR)/root/usr/share/openclash/ mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/config mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/rule_provider mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/backup mkdir -p $(PKG_BUILD_DIR)/root/etc/openclash/core mkdir -p $(PKG_BUILD_DIR)/root/usr/share/openclash/backup cp -f "$(PKG_BUILD_DIR)/root/etc/config/openclash" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_rules.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_rules.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_rules_2.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_rules_2.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_hosts.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_hosts.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_fake_filter.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_fake_filter.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_domain_dns.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_domain_dns.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_domain_dns_policy.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_domain_dns_policy.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_fallback_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_fallback_filter.yaml" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_netflix_domains.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_netflix_domains.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_force_sniffing_domain.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_force_sniffing_domain.yaml" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_sniffing_domain_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_sniffing_domain_filter.yaml" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_sniffing_ports_filter.yaml" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_sniffing_ports_filter.yaml" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_localnetwork_ipv4.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_localnetwork_ipv4.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_localnetwork_ipv6.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_localnetwork_ipv6.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_chnroute_pass.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_chnroute_pass.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_chnroute6_pass.list" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_chnroute6_pass.list" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_firewall_rules.sh" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_firewall_rules.sh" >/dev/null 2>&1 cp -f "$(PKG_BUILD_DIR)/root/etc/openclash/custom/openclash_custom_overwrite.sh" "$(PKG_BUILD_DIR)/root/usr/share/openclash/backup/openclash_custom_overwrite.sh" >/dev/null 2>&1 exit 0 endef

define Build/Configure endef

define Build/Compile endef

define Package/$(PKG_NAME)/conffiles endef

define Package/$(PKG_NAME)/preinst #!/bin/sh if [ -f "/etc/config/openclash" ]; then cp -f "/etc/config/openclash" "/tmp/openclash.bak" >/dev/null 2>&1 cp -rf "/etc/openclash" "/tmp/openclash" >/dev/null 2>&1 cp -rf "/usr/share/openclash/ui/yacd" "/tmp/openclash_yacd" >/dev/null 2>&1 cp -rf "/usr/share/openclash/ui/dashboard" "/tmp/openclash_dashboard" >/dev/null 2>&1 fi exit 0 endef

define Package/$(PKG_NAME)/postinst #!/bin/sh sed -i "s/v0.00.00-beta/v$(PKG_VERSION)-beta/g" /www/luci-static/resources/openclash/img/version.svg >/dev/null 2>&1 exit 0 endef

define Package/$(PKG_NAME)/prerm #!/bin/sh uci -q set openclash.config.enable=0 uci -q commit openclash cp -f "/etc/config/openclash" "/tmp/openclash.bak" >/dev/null 2>&1 cp -rf "/etc/openclash" "/tmp/openclash" >/dev/null 2>&1 cp -rf "/usr/share/openclash/ui/yacd" "/tmp/openclash_yacd" >/dev/null 2>&1 cp -rf "/usr/share/openclash/ui/dashboard" "/tmp/openclash_dashboard" >/dev/null 2>&1 exit 0 endef

define Package/$(PKG_NAME)/postrm #!/bin/sh dnsmasqconfdir="$(uci -q get dhcp.@dnsmasq[0].confdir || echo '/tmp/dnsmasq.d')" dnsmasqconfdir="${dnsmasqconfdir%/}" rm -rf /etc/openclash >/dev/null 2>&1 rm -rf /tmp/openclash.log >/dev/null 2>&1 rm -rf /tmp/openclash_start.log >/dev/null 2>&1 rm -rf /tmp/openclash_last_version >/dev/null 2>&1 rm -rf /tmp/openclash_config.tmp >/dev/null 2>&1 rm -rf /tmp/openclash.change >/dev/null 2>&1 rm -rf /tmp/Proxy_Group >/dev/null 2>&1 rm -rf /tmp/rules_name >/dev/null 2>&1 rm -rf /tmp/rule_providers_name >/dev/null 2>&1 rm -rf /tmp/clash_last_version >/dev/null 2>&1 rm -rf /usr/share/openclash/backup >/dev/null 2>&1 rm -rf ${dnsmasqconfdir}/dnsmasq_openclash_custom_domain.conf >/dev/null 2>&1 rm -rf ${dnsmasqconfdir}/dnsmasq_openclash_chnroute_pass.conf >/dev/null 2>&1 rm -rf ${dnsmasqconfdir}/dnsmasq_openclash_chnroute6_pass.conf >/dev/null 2>&1 rm -rf ${dnsmasqconfdir}/dnsmasq_accelerated-domains.china.conf >/dev/null 2>&1 rm -rf /tmp/dler >/dev/null 2>&1 rm -rf /tmp/etc/openclash >/dev/null 2>&1 rm -rf /tmp/openclash_edit_file_name >/dev/null 2>&1 rm -rf /tmp/openclash__region>/dev/null 2>&1 sed -i '/OpenClash Append/,/OpenClash Append End/d' "/usr/lib/lua/luci/model/network.lua" >/dev/null 2>&1 sed -i '/.kB maximum content size/c\HTTP_MAX_CONTENT = 1024100 -- 100 kB maximum content size' /usr/lib/lua/luci/http.lua >/dev/null 2>&1 sed -i '/.kB maximum content size/c\export let HTTP_MAX_CONTENT = 1024100; // 100 kB maximum content size' /usr/share/ucode/luci/http.uc >/dev/null 2>&1 uci -q delete firewall.openclash uci -q commit firewall uci -q delete ucitrack.@openclash[-1] uci -q commit ucitrack rm -rf /tmp/luci- exit 0 endef

define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n $(INSTALL_DATA) $(PKG_BUILD_DIR)/..lmo $(1)/usr/lib/lua/luci/i18n/ $(CP) $(PKG_BUILD_DIR)/root/* $(1)/ $(CP) $(PKG_BUILD_DIR)/luasrc/* $(1)/usr/lib/lua/luci/ endef

$(eval $(call BuildPackage,$(PKG_NAME)))

这是目前编译的openclash默认的makefile

JackyLeeGM avatar Jul 29 '24 15:07 JackyLeeGM

编译之前使用脚本自动更新内核到Custom files,或者手动上传Custom files,自己的一些配置也可用此方法,下面是示例 /home/$USER/$BUILDROOT_DIR/files/etc/openclash/core

apoiston avatar Jul 29 '24 21:07 apoiston

https://github.com/morytyann/OpenWrt-mihomo https://github.com/morytyann/OpenWrt-mihomo/blob/main/mihomo/Makefile

ydoKFVJQDymJcb avatar Aug 08 '24 09:08 ydoKFVJQDymJcb

可以参考上面的项目

vernesong avatar Aug 18 '24 09:08 vernesong

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days

github-actions[bot] avatar Oct 18 '24 08:10 github-actions[bot]