re-add luci app vlmcsd

This commit is contained in:
coolsnowwolf 2018-10-08 23:22:19 +08:00
parent e9b42ca39c
commit f88cb095ff
12 changed files with 340 additions and 1 deletions

View File

@ -0,0 +1,18 @@
#
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI page for KMS
LUCI_DEPENDS:=+vlmcsd
PKG_VERSION:=1.0
PKG_RELEASE:=2
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -0,0 +1,19 @@
module("luci.controller.vlmcsd", package.seeall)
function index()
if not nixio.fs.access("/etc/config/vlmcsd") then
return
end
local page
page = entry({"admin", "services", "vlmcsd"}, cbi("vlmcsd"), _("KMS Server"), 100)
page.i18n = "vlmcsd"
page.dependent = true
entry({"admin","services","vlmcsd","status"},call("act_status")).leaf=true
end
function act_status()
local e={}
e.running=luci.sys.call("pgrep vlmcsd >/dev/null")==0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end

View File

@ -0,0 +1,35 @@
m = Map("vlmcsd")
m.title = translate("vlmcsd config")
m.description = translate("A KMS Serever Emulator to active your Windows or Office")
m:section(SimpleSection).template = "vlmcsd/vlmcsd_status"
s = m:section(TypedSection, "vlmcsd")
s.addremove = false
s.anonymous = true
s:tab("basic", translate("Basic Setting"))
enable = s:taboption("basic",Flag, "enabled", translate("Enable"))
enable.rmempty = false
autoactivate = s:taboption("basic", Flag, "autoactivate", translate("Auto activate"))
autoactivate.rmempty = false
s:tab("config", translate("Config File"))
config = s:taboption("config", Value, "config", translate("configfile"), translate("This file is /etc/vlmcsd.ini."), "")
config.template = "cbi/tvalue"
config.rows = 13
config.wrap = "off"
function config.cfgvalue(self, section)
return nixio.fs.readfile("/etc/vlmcsd.ini")
end
function config.write(self, section, value)
value = value:gsub("\r\n?", "\n")
nixio.fs.writefile("/etc/vlmcsd.ini", value)
end
return m

View File

@ -0,0 +1,22 @@
<script type="text/javascript">//<![CDATA[
XHR.poll(3, '<%=url([[admin]], [[services]], [[vlmcsd]], [[status]])%>', null,
function(x, data) {
var tb = document.getElementById('vlmcsd_status');
if (data && tb) {
if (data.running) {
var links = '<em><b><font color=green>KMS <%:RUNNING%></font></b></em>';
tb.innerHTML = links;
} else {
tb.innerHTML = '<em><b><font color=red>KMS <%:NOT RUNNING%></font></b></em>';
}
}
}
);
//]]>
</script>
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
<fieldset class="cbi-section">
<p id="vlmcsd_status">
<em><%:Collecting data...%></em>
</p>
</fieldset>

View File

@ -0,0 +1,38 @@
msgid ""
msgstr ""
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "vlmcsd config"
msgstr "KMS服务器设置"
msgid "KMS Server"
msgstr "KMS服务器"
msgid "Basic Setting"
msgstr "基本设置"
msgid "Config File"
msgstr "配置文件"
msgid "<b><font color=green>Vlmcsd is running.</font></b>"
msgstr "<b><font color=green>KMS 服务器运行中</font></b>"
msgid "<b><font color=red>Vlmcsd is not running.</font></b>"
msgstr "<b><font color=red>KMS 服务器未运行</font></b>"
msgid "Enable"
msgstr "启用"
msgid "Auto activate"
msgstr "自动激活局域网客户端"
msgid "configfile"
msgstr "配置文件"
msgid "This file is /etc/vlmcsd.ini."
msgstr "这个文件在 /etc/vlmcsd.ini 下,可以增加新的产品主密钥。"

View File

@ -0,0 +1,5 @@
config vlmcsd 'config'
option autoactivate '1'
option enabled '1'

View File

@ -0,0 +1,38 @@
#!/bin/sh /etc/rc.common
# Copyright (c) 2011-2015 OpenWrt.org
START=90
get_config()
{
config_get_bool enabled $1 enabled 0
config_get autoactivate $1 autoactivate 1
}
start(){
config_load vlmcsd
config_foreach get_config vlmcsd
[ $enabled -eq 0 ] && exit 0
/usr/bin/vlmcsd -i /etc/vlmcsd.ini -L 0.0.0.0:1688
HOSTNAME=`uci get system.@system[0].hostname`
host_name=$(awk -F ',' '/^[ \t]*srv-host=_vlmcs\._tcp/{print $2}' /etc/dnsmasq.conf)
echo $HOSTNAME
echo $host_name
if [ "$HOSTNAME" != "$host_name" ];then
sed -i '/^[ \t]*srv-host=_vlmcs\._tcp/d' /etc/dnsmasq.conf
sed -i '$a\srv-host=_vlmcs\._tcp,'"$HOSTNAME"','"1688"',0,100' /etc/dnsmasq.conf
/etc/init.d/dnsmasq restart
fi
echo "KMS Server has started."
}
stop(){
pid=`pgrep /usr/bin/vlmcsd`
kill -9 $pid
echo "KMS Server has stopped."
}

View File

@ -0,0 +1,21 @@
#!/bin/sh
uci -q batch <<-EOF >/dev/null
delete ucitrack.@vlmcsd[-1]
add ucitrack vlmcsd
set ucitrack.@vlmcsd[-1].init=vlmcsd
commit ucitrack
EOF
uci delete firewall.kms
uci add firewall rule
uci rename firewall.@rule[-1]="kms"
uci set firewall.@rule[-1].name="kms"
uci set firewall.@rule[-1].target="ACCEPT"
uci set firewall.@rule[-1].src="wan"
uci set firewall.@rule[-1].proto="tcp"
uci set firewall.@rule[-1].dest_port="1688"
uci commit firewall
rm -f /tmp/luci-indexcache
exit 0

View File

@ -0,0 +1,47 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=vlmcsd
PKG_VERSION:=svn1111
PKG_RELEASE:=2
PKG_MAINTAINER:=fuyumi <280604399@qq.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/mchome/vlmcsd.git
PKG_SOURCE_VERSION:=5f25150439817c2f74395089300972f11b2387f8
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_VERSION).tar.gz
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/vlmcsd
SECTION:=net
CATEGORY:=Network
TITLE:=vlmcsd for OpenWRT
URL:=http://forums.mydigitallife.info/threads/50234
DEPENDS:=+libpthread
endef
define Package/vlmcsd/description
vlmcsd is a KMS Emulator in C.
endef
MAKE_FLAGS += \
-C $(PKG_BUILD_DIR)
define Package/vlmcsd/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/vlmcsd $(1)/usr/bin/vlmcsd
#$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/vlmcs $(1)/usr/bin/vlmcs
$(INSTALL_DIR) $(1)/etc
$(INSTALL_BIN) ./files/vlmcsd.ini $(1)/etc/vlmcsd.ini
#$(INSTALL_DIR) $(1)/etc/init.d
#$(INSTALL_BIN) ./files/vlmcsd.init $(1)/etc/init.d/vlmcsd
endef
$(eval $(call BuildPackage,vlmcsd))

View File

@ -0,0 +1,59 @@
#ePID/HwId设置为Windows显式
;55c92734-d682-4d71-983e-d6ec3f16059f = 06401-00206-271-392041-03-1033-9600.0000-3622014 / 01 02 03 04 05 06 07 08
#ePID设置为Office2010包含Visio和Project显式
;59a52881-a989-479d-af46-f275c6370663 = 06401-00096-199-496023-03-1033-9600.0000-3622014
#ePID设置为Office2013包含Visio和Project显式
;0ff1ce15-a989-479d-af46-f275c6370663 = 06401-00206-234-409313-03-1033-9600.0000-3622014
#使用自定义TCP端口
;Port = 1688
#监听所有IPv4地址默认端口1688
;Listen = 0.0.0.0:1688
#监听所有IPv6地址默认端口1688
;Listen = [::]:1688
#程序启动时随机ePIDs只有那些未显式指定的
;RandomizationLevel = 1
#在ePIDs中使用特定区域 (1033 = 美国英语)即使ePID是随机的
;LCID = 1033
#设置最多4个同时工作分叉进程或线程
;MaxWorkers = 4
#闲置30秒后断开用户
;ConnectionTimeout = 30
#每次请求后立即断开客户端
;DisconnectClientsImmediately = yes
#写一个pid文件包含vlmcsd的进程ID的文件
;PidFile = /var/run/vlmcsd.pid
#写日志到/var/log/vlmcsd.log
;LogFile = /var/log/vlmcsd.log
#创建详细日志
;LogVerbose = true
#设置激活间隔2小时
;ActivationInterval = 2h
#设置更新间隔7天
;RenewalInterval = 7d
#运行程序的用户为vlmcsduser
;user = vlmcsduser
#运行程序的组为vlmcsdgroup
;group = vlmcsdgroup
#禁用或启用RPC的NDR64传输语法默认启用
;UseNDR64 = true
#禁用或启用RPC的绑定时间特性协商默认启用
;UseBTFN = true

View File

@ -0,0 +1,37 @@
#!/bin/sh /etc/rc.common
# Copyright (c) 2011-2015 OpenWrt.org
START=90
start(){
if [ ! -f "/tmp/vlmcsd.pid" ]; then
/usr/bin/vlmcsd -i /etc/vlmcsd.ini -p /tmp/vlmcsd.pid -L 0.0.0.0:1688
iptables -D input_rule -p tcp --dport 1688 -j ACCEPT
iptables -A input_rule -p tcp --dport 1688 -j ACCEPT
sed -i '/## luci-app-vlmcsd/d' /etc/firewall.user
echo "iptables -A input_rule -p tcp --dport 1688 -j ACCEPT ## luci-app-vlmcsd" >> /etc/firewall.user
echo "KMS Server has started."
else
echo "KMS Server has already started."
fi
}
stop(){
if [ ! -f "/tmp/vlmcsd.pid" ]; then
echo "KMS Server is not running."
else
pid=`cat /tmp/vlmcsd.pid`
kill $pid
rm -f /tmp/vlmcsd.pid
iptables -D input_rule -p tcp --dport 1688 -j ACCEPT
sed -i '/## luci-app-vlmcsd/d' /etc/firewall.user
echo "KMS Server has stopped."
fi
}
restart(){
stop
sleep 2
start
echo "KMS Server has restarted."
}

View File

@ -13,7 +13,7 @@ SUBTARGETS:=mt7620 mt7621 mt76x8 rt288x rt305x rt3883
FEATURES:=squashfs gpio
MAINTAINER:=John Crispin <john@phrozen.org>
KERNEL_PATCHVER:=4.9
KERNEL_PATCHVER:=4.14
define Target/Description
Build firmware images for Ralink RT288x/RT3xxx based boards.