mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 10:31:38 +08:00
✨ Sync 2026-06-17 04:40:21
This commit is contained in:
parent
9bd05f312f
commit
81f1fa4be3
@ -1,17 +1,12 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
#
|
||||
# Copyright (C) 2022 ImmortalWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=vlmcsd
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=svn1113
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/Wind4/vlmcsd.git
|
||||
PKG_SOURCE_DATE:=2020-03-30
|
||||
PKG_SOURCE_VERSION:=70e03572b254688b8c3557f898e7ebd765d29ae1
|
||||
PKG_MIRROR_HASH:=skip
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/Wind4/vlmcsd/tar.gz/$(PKG_VERSION)?
|
||||
PKG_HASH:=skip
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
@ -22,17 +17,33 @@ PKG_BUILD_PARALLEL:=1
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/vlmcsd
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=A KMS Emulator in C
|
||||
URL:=https://github.com/Wind4/vlmcsd
|
||||
DEPENDS:=+libpthread
|
||||
USERID:=vlmcsd:vlmcsd
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=vlmcsd for OpenWRT
|
||||
URL:=http://forums.mydigitallife.info/threads/50234
|
||||
DEPENDS:=+libpthread
|
||||
endef
|
||||
|
||||
define Package/vlmcsd/description
|
||||
KMS Emulator in C (currently runs on Linux including Android, FreeBSD,
|
||||
Solaris, Minix, Mac OS, iOS, Windows with or without Cygwin)
|
||||
vlmcsd is a KMS Emulator in C.
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
$(call Build/Prepare/Default)
|
||||
rm $(PKG_BUILD_DIR)/GNUmakefile
|
||||
endef
|
||||
|
||||
define Package/vlmcsd/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/vlmcsd $(1)/usr/bin/vlmcsd
|
||||
$(INSTALL_DIR) $(1)/etc
|
||||
$(INSTALL_BIN) ./files/vlmcsd.ini $(1)/etc/vlmcsd.ini
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) ./files/vlmcsd.config $(1)/etc/config/vlmcsd
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/vlmcsd.init $(1)/etc/init.d/vlmcsd
|
||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
||||
$(INSTALL_BIN) ./files/40-vlmcsd $(1)/etc/uci-defaults/40-vlmcsd
|
||||
endef
|
||||
|
||||
define Package/vlmcsd/conffiles
|
||||
@ -40,20 +51,16 @@ define Package/vlmcsd/conffiles
|
||||
/etc/vlmcsd.ini
|
||||
endef
|
||||
|
||||
MAKE_FLAGS += \
|
||||
CC="$(TARGET_CC_NOCACHE)" \
|
||||
VLMCSD_VERSION="$(PKG_VERSION)"
|
||||
define Package/vlmcsd/postinst-pkg
|
||||
#!/bin/sh
|
||||
[ -n "$${IPKG_INSTROOT}" ] && exit 0
|
||||
|
||||
define Package/vlmcsd/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/vlmcsd $(1)/usr/bin/vlmcsd
|
||||
enabled="$$(uci -q get vlmcsd.config.enabled 2>/dev/null)"
|
||||
if [ "$$enabled" = "1" ] && [ -x /etc/init.d/vlmcsd ]; then
|
||||
/etc/init.d/vlmcsd enable >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc
|
||||
$(INSTALL_BIN) ./files/vlmcsd.ini $(1)/etc/vlmcsd.ini
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_BIN) ./files/vlmcsd.conf $(1)/etc/config/vlmcsd
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/vlmcsd.init $(1)/etc/init.d/vlmcsd
|
||||
exit 0
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,vlmcsd))
|
||||
|
||||
42
vlmcsd/files/40-vlmcsd
Normal file
42
vlmcsd/files/40-vlmcsd
Normal file
@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
|
||||
changed=0
|
||||
|
||||
if ! uci -q get vlmcsd.config >/dev/null 2>&1; then
|
||||
uci -q batch <<'EOF'
|
||||
set vlmcsd.config=vlmcsd
|
||||
set vlmcsd.config.enabled='0'
|
||||
set vlmcsd.config.auto_activate='1'
|
||||
set vlmcsd.config.internet_access='0'
|
||||
EOF
|
||||
changed=1
|
||||
fi
|
||||
|
||||
if ! uci -q get vlmcsd.config.enabled >/dev/null 2>&1; then
|
||||
uci -q set vlmcsd.config.enabled='0'
|
||||
changed=1
|
||||
fi
|
||||
|
||||
if ! uci -q get vlmcsd.config.auto_activate >/dev/null 2>&1; then
|
||||
autoactivate="$(uci -q get vlmcsd.config.autoactivate)"
|
||||
if [ -n "$autoactivate" ]; then
|
||||
uci -q set vlmcsd.config.auto_activate="$autoactivate"
|
||||
else
|
||||
uci -q set vlmcsd.config.auto_activate='1'
|
||||
fi
|
||||
changed=1
|
||||
fi
|
||||
|
||||
if uci -q get vlmcsd.config.autoactivate >/dev/null 2>&1; then
|
||||
uci -q delete vlmcsd.config.autoactivate
|
||||
changed=1
|
||||
fi
|
||||
|
||||
if ! uci -q get vlmcsd.config.internet_access >/dev/null 2>&1; then
|
||||
uci -q set vlmcsd.config.internet_access='0'
|
||||
changed=1
|
||||
fi
|
||||
|
||||
[ "$changed" -eq 1 ] && uci commit vlmcsd
|
||||
|
||||
exit 0
|
||||
2
vlmcsd/files/vlmcsd.conf → vlmcsd/files/vlmcsd.config
Executable file → Normal file
2
vlmcsd/files/vlmcsd.conf → vlmcsd/files/vlmcsd.config
Executable file → Normal file
@ -1,4 +1,4 @@
|
||||
config vlmcsd 'config'
|
||||
option enabled '0'
|
||||
option auto_activate '0'
|
||||
option auto_activate '1'
|
||||
option internet_access '0'
|
||||
27
vlmcsd/files/vlmcsd.ini
Executable file → Normal file
27
vlmcsd/files/vlmcsd.ini
Executable file → Normal file
@ -16,6 +16,15 @@
|
||||
#ePID/HwId设置为Windows中国政府版 (Enterprise G/GN) 显式
|
||||
;WinChinaGov = 06401-03858-000-555555-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08
|
||||
|
||||
#使用自定义TCP端口
|
||||
;Port = 1688
|
||||
|
||||
#监听所有IPv4地址(默认端口1688)
|
||||
;Listen = 0.0.0.0:1688
|
||||
|
||||
#监听所有IPv6地址(默认端口1688)
|
||||
;Listen = [::]:1688
|
||||
|
||||
#程序启动时随机ePIDs(只有那些未显式指定的)
|
||||
;RandomizationLevel = 1
|
||||
|
||||
@ -31,6 +40,12 @@
|
||||
#每次请求后立即断开客户端
|
||||
;DisconnectClientsImmediately = yes
|
||||
|
||||
#写一个pid文件(包含vlmcsd的进程ID的文件)
|
||||
;PidFile = /var/run/vlmcsd.pid
|
||||
|
||||
#写日志到/var/log/vlmcsd.log
|
||||
;LogFile = /var/log/vlmcsd.log
|
||||
|
||||
#创建详细日志
|
||||
;LogVerbose = true
|
||||
|
||||
@ -40,8 +55,20 @@
|
||||
#设置更新间隔7天
|
||||
;RenewalInterval = 7d
|
||||
|
||||
#运行程序的用户为vlmcsduser
|
||||
;user = vlmcsduser
|
||||
|
||||
#运行程序的组为vlmcsdgroup
|
||||
;group = vlmcsdgroup
|
||||
|
||||
#禁用或启用RPC的NDR64传输语法(默认启用)
|
||||
;UseNDR64 = true
|
||||
|
||||
#禁用或启用RPC的绑定时间特性协商(默认启用)
|
||||
;UseBTFN = true
|
||||
|
||||
#Windows 10/ Windows 11 KMS 安装激活密钥
|
||||
#Windows 10/11 Pro:W269N-WFGWX-YVC9B-4J6C9-T83GX
|
||||
#Windows 10/11 Enterprise:NPPR9-FWDCX-D2C8J-H872K-2YT43
|
||||
#Windows 10/11 Pro for Workstations:NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J
|
||||
|
||||
|
||||
152
vlmcsd/files/vlmcsd.init
Executable file → Normal file
152
vlmcsd/files/vlmcsd.init
Executable file → Normal file
@ -1,57 +1,121 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=99
|
||||
USE_PROCD=1
|
||||
START=90
|
||||
STOP=10
|
||||
|
||||
DNSMASQ_UCI_CONFIG="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')"
|
||||
if [ -f "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG" ];then
|
||||
DNSMASQ_VLMCSD="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG")/dnsmasq-vlmcsd.conf"
|
||||
else
|
||||
DNSMASQ_VLMCSD="/tmp/dnsmasq.d/dnsmasq-vlmcsd.conf"
|
||||
fi
|
||||
NAME="vlmcsd"
|
||||
CONF="$NAME"
|
||||
PROG="/usr/bin/vlmcsd"
|
||||
INI_FILE="/etc/vlmcsd.ini"
|
||||
KMS_PORT="1688"
|
||||
DHCP_SECTION="$NAME"
|
||||
|
||||
normalize_bool() {
|
||||
case "$1" in
|
||||
1|on|true|yes|enabled)
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
config_get_bool_compat() {
|
||||
local __var="$1"
|
||||
local section="$2"
|
||||
local option="$3"
|
||||
local default="${4:-0}"
|
||||
local legacy_option="$5"
|
||||
local value
|
||||
|
||||
config_get value "$section" "$option"
|
||||
if [ -z "$value" ] && [ -n "$legacy_option" ]; then
|
||||
config_get value "$section" "$legacy_option"
|
||||
fi
|
||||
|
||||
if normalize_bool "${value:-$default}"; then
|
||||
eval "$__var=1"
|
||||
else
|
||||
eval "$__var=0"
|
||||
fi
|
||||
}
|
||||
|
||||
reload_dnsmasq() {
|
||||
[ -x /etc/init.d/dnsmasq ] || return 0
|
||||
|
||||
/etc/init.d/dnsmasq reload >/dev/null 2>&1 || \
|
||||
/etc/init.d/dnsmasq restart >/dev/null 2>&1 || true
|
||||
}
|
||||
|
||||
sync_dns_srv() {
|
||||
local enabled="$1"
|
||||
local before after hostname domain srv target
|
||||
|
||||
before="$(uci -q show "dhcp.${DHCP_SECTION}" 2>/dev/null)"
|
||||
uci -q delete "dhcp.${DHCP_SECTION}"
|
||||
|
||||
if [ "$enabled" = "1" ]; then
|
||||
hostname="$(uci -q get system.@system[0].hostname)"
|
||||
domain="$(uci -q get dhcp.@dnsmasq[0].domain)"
|
||||
|
||||
[ -n "$hostname" ] || hostname="OpenWrt"
|
||||
|
||||
srv="_vlmcs._tcp"
|
||||
target="$hostname"
|
||||
if [ -n "$domain" ]; then
|
||||
srv="${srv}.${domain}"
|
||||
target="${target}.${domain}"
|
||||
fi
|
||||
|
||||
uci -q set "dhcp.${DHCP_SECTION}=srvhost"
|
||||
uci -q set "dhcp.${DHCP_SECTION}.srv=${srv}"
|
||||
uci -q set "dhcp.${DHCP_SECTION}.target=${target}"
|
||||
uci -q set "dhcp.${DHCP_SECTION}.port=${KMS_PORT}"
|
||||
fi
|
||||
|
||||
after="$(uci -q show "dhcp.${DHCP_SECTION}" 2>/dev/null)"
|
||||
[ "$before" = "$after" ] && return 0
|
||||
|
||||
uci -q commit dhcp
|
||||
reload_dnsmasq
|
||||
}
|
||||
|
||||
start_service() {
|
||||
local enabled auto_activate internet_access
|
||||
|
||||
config_load "vlmcsd"
|
||||
config_get_bool enabled "config" "enabled" "0"
|
||||
config_get_bool auto_activate "config" "auto_activate" "0"
|
||||
config_get_bool internet_access "config" "internet_access" "0"
|
||||
config_load "$CONF"
|
||||
config_get_bool_compat enabled config enabled 0
|
||||
config_get_bool_compat auto_activate config auto_activate 1 autoactivate
|
||||
config_get_bool_compat internet_access config internet_access 0
|
||||
|
||||
[ "$enabled" -eq "1" ] || return 1
|
||||
|
||||
if [ "$auto_activate" -eq "1" ];then
|
||||
hostname="$(uci get system.@system[0].hostname)"
|
||||
echo "srv-host=_vlmcs._tcp,$hostname,1688,0,100" > "$DNSMASQ_VLMCSD"
|
||||
/etc/init.d/dnsmasq restart 2>"/dev/null"
|
||||
if [ "$enabled" -ne 1 ]; then
|
||||
sync_dns_srv 0
|
||||
return 1
|
||||
fi
|
||||
|
||||
procd_open_instance "vlmcsd"
|
||||
procd_set_param command /usr/bin/vlmcsd
|
||||
procd_append_param command -D
|
||||
procd_append_param command -i "/etc/vlmcsd.ini"
|
||||
procd_append_param command -l syslog
|
||||
procd_append_param command -L "0.0.0.0:1688"
|
||||
procd_append_param command -L "[::]:1688"
|
||||
[ -x "$PROG" ] || return 1
|
||||
|
||||
procd_set_param file "/etc/vlmcsd.ini"
|
||||
sync_dns_srv "$auto_activate"
|
||||
|
||||
procd_open_instance "$NAME"
|
||||
procd_set_param command "$PROG" -D -i "$INI_FILE" -L "0.0.0.0:${KMS_PORT}"
|
||||
procd_set_param file "$INI_FILE"
|
||||
procd_set_param respawn
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
|
||||
procd_set_param user vlmcsd
|
||||
procd_set_param group vlmcsd
|
||||
procd_add_jail vlmcsd ronly log
|
||||
procd_add_jail_mount "/etc/vlmcsd.ini"
|
||||
|
||||
if [ "$internet_access" -eq "1" ];then
|
||||
if [ "$internet_access" -eq 1 ]; then
|
||||
procd_open_data
|
||||
json_add_array firewall
|
||||
json_add_object ""
|
||||
json_add_string type rule
|
||||
json_add_string name "Allow-vlmcsd-tcp"
|
||||
json_add_string proto "tcp"
|
||||
json_add_string src "*"
|
||||
json_add_string dest_port "1688"
|
||||
json_add_string target "ACCEPT"
|
||||
json_add_string type rule
|
||||
json_add_string name "Allow-vlmcsd"
|
||||
json_add_string proto "tcp"
|
||||
json_add_string src "*"
|
||||
json_add_string dest_port "$KMS_PORT"
|
||||
json_add_string target "ACCEPT"
|
||||
json_close_object
|
||||
json_close_array
|
||||
procd_close_data
|
||||
@ -61,15 +125,13 @@ start_service() {
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
rm -f "$DNSMASQ_VLMCSD"
|
||||
/etc/init.d/dnsmasq restart 2>"/dev/null"
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
start
|
||||
sync_dns_srv 0
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger vlmcsd
|
||||
procd_add_reload_trigger "$CONF" dhcp system
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
restart
|
||||
}
|
||||
|
||||
35
vlmcsd/src/Makefile
Normal file
35
vlmcsd/src/Makefile
Normal file
@ -0,0 +1,35 @@
|
||||
SRCDIR := src
|
||||
BINDIR := bin
|
||||
OBJDIR := build
|
||||
|
||||
TARGETS := $(BINDIR)/vlmcs $(BINDIR)/vlmcsd
|
||||
|
||||
.PHONY: all
|
||||
all: $(BINDIR) $(TARGETS)
|
||||
|
||||
$(BINDIR)/vlmcs: $(OBJDIR)/vlmcs.o $(OBJDIR)/kmsdata-full.o $(OBJDIR)/crypto.o \
|
||||
$(OBJDIR)/kms.o $(OBJDIR)/endian.o $(OBJDIR)/output.o \
|
||||
$(OBJDIR)/shared_globals.o $(OBJDIR)/helpers.o \
|
||||
$(OBJDIR)/network.o $(OBJDIR)/rpc.o \
|
||||
$(OBJDIR)/crypto_internal.o $(OBJDIR)/dns_srv.o
|
||||
$(CC) $(LDFLAGS) -o $@ $^
|
||||
|
||||
$(BINDIR)/vlmcsd: $(OBJDIR)/vlmcsd.o $(OBJDIR)/kmsdata.o $(OBJDIR)/crypto.o \
|
||||
$(OBJDIR)/kms.o $(OBJDIR)/endian.o $(OBJDIR)/output.o \
|
||||
$(OBJDIR)/shared_globals.o $(OBJDIR)/helpers.o \
|
||||
$(OBJDIR)/network.o $(OBJDIR)/rpc.o \
|
||||
$(OBJDIR)/crypto_internal.o
|
||||
$(CC) $(LDFLAGS) -o $@ $^
|
||||
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(OBJDIR):
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(BINDIR):
|
||||
@mkdir -p $(BINDIR)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@rm -rf $(OBJDIR) $(BINDIR)
|
||||
Loading…
Reference in New Issue
Block a user