diff --git a/luci-app-zerotier/Makefile b/luci-app-zerotier/Makefile
deleted file mode 100644
index 8ef1c0c0..00000000
--- a/luci-app-zerotier/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-only
-#
-# Copyright (C) 2022 ImmortalWrt.org
-
-include $(TOPDIR)/rules.mk
-
-LUCI_TITLE:=LuCI for Zerotier
-LUCI_DEPENDS:=+zerotier +jsonfilter +ucode
-LUCI_PKGARCH:=all
-
-define Package/luci-app-zerotier/conffiles
-/etc/config/zero/
-/etc/config/zerotier
-endef
-
-include $(TOPDIR)/feeds/luci/luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
-
-
diff --git a/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js b/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js
deleted file mode 100644
index a26d437d..00000000
--- a/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/* SPDX-License-Identifier: GPL-3.0-only
- *
- * Copyright (C) 2022 ImmortalWrt.org
- */
-
-'use strict';
-'require form';
-'require poll';
-'require rpc';
-'require uci';
-'require view';
-
-var callServiceList = rpc.declare({
- object: 'service',
- method: 'list',
- params: ['name'],
- expect: { '': {} }
-});
-
-function getServiceStatus() {
- return L.resolveDefault(callServiceList('zerotier'), {}).then(function (res) {
- var isRunning = false;
- try {
- isRunning = res['zerotier']['instances']['instance1']['running'];
- } catch (e) { }
- return isRunning;
- });
-}
-
-function renderStatus(isRunning) {
- var spanTemp = '%s %s';
- var renderHTML;
- if (isRunning) {
- renderHTML = String.format(spanTemp, 'green', _('ZeroTier'), _('RUNNING'));
- } else {
- renderHTML = String.format(spanTemp, 'red', _('ZeroTier'), _('NOT RUNNING'));
- }
-
- return renderHTML;
-}
-
-return view.extend({
- load: function() {
- return Promise.all([
- uci.load('zerotier')
- ]);
- },
-
- render: function(data) {
- var m, s, o;
-
- m = new form.Map('zerotier', _('ZeroTier'),
- _('ZeroTier is an open source, cross-platform and easy to use virtual LAN.'));
-
- s = m.section(form.TypedSection);
- s.anonymous = true;
- s.render = function () {
- poll.add(function () {
- return L.resolveDefault(getServiceStatus()).then(function (res) {
- var view = document.getElementById("service_status");
- view.innerHTML = renderStatus(res);
- });
- });
-
- return E('div', { class: 'cbi-section', id: 'status_bar' }, [
- E('p', { id: 'service_status' }, _('Collecting data ...'))
- ]);
- }
-
- s = m.section(form.NamedSection, 'sample_config', 'config');
-
- o = s.option(form.Flag, 'enabled', _('Enable'));
- o.default = o.disabled;
- o.rmempty = false;
-
- o = s.option(form.DynamicList, 'join', _('Network ID'));
- o.rmempty = false;
-
- o = s.option(form.Flag, 'nat', _('Auto NAT clients'),
- _('Allow ZeroTier clients access your LAN network.'));
- o.default = o.disabled;
- o.rmempty = false;
-
- o = s.option(form.Button, '_panel', _('ZeroTier Central'),
- _('Create or manage your ZeroTier network, and auth clients who could access.'));
- o.inputtitle = _('Open website');
- o.inputstyle = 'apply';
- o.onclick = function () {
- window.open("https://my.zerotier.com/network", '_blank');
- }
-
- return m.render();
- }
-});
diff --git a/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js b/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js
deleted file mode 100644
index de726662..00000000
--- a/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/* SPDX-License-Identifier: GPL-3.0-only
- *
- * Copyright (C) 2022 ImmortalWrt.org
- */
-
-'use strict';
-'require fs';
-'require ui';
-'require view';
-
-return view.extend({
- load: function() {
- return fs.exec('/sbin/ifconfig').then(function(res) {
- if (res.code !== 0 || !res.stdout || res.stdout.trim() === '') {
- ui.addNotification(null, E('p', {}, _('Unable to get interface info: %s.').format(res.message)));
- return '';
- }
-
- var interfaces = res.stdout.match(/zt[a-z0-9]+/g);
- if (!interfaces || interfaces.length === 0)
- return 'No interface online.';
-
- var promises = interfaces.map(function(name) {
- return fs.exec('/sbin/ifconfig', [name]);
- });
-
- return Promise.all(promises).then(function(results) {
- var data = results.map(function(res, index) {
- if (res.code !== 0 || !res.stdout || res.stdout.trim() === '') {
- ui.addNotification(null, E('p', {}, _('Unable to get interface %s info: %s.').format(interfaces[index], res.message)));
- return null;
- }
- return {
- name: interfaces[index],
- stdout: res.stdout.trim()
- };
- }).filter(Boolean);
-
- return data.map(function(info) {
- var lines = info.stdout.split('\n');
- var parsedInfo = {
- name: info.name
- };
-
- lines.forEach(function(line) {
- if (line.includes('HWaddr')) {
- parsedInfo.mac = line.split('HWaddr')[1].trim().split(' ')[0];
- } else if (line.includes('inet addr:')) {
- parsedInfo.ipv4 = line.split('inet addr:')[1].trim().split(' ')[0];
- } else if (line.includes('inet6 addr:')) {
- parsedInfo.ipv6 = line.split('inet6 addr:')[1].trim().split('/')[0];
- } else if (line.includes('MTU:')) {
- parsedInfo.mtu = line.split('MTU:')[1].trim().split(' ')[0];
- } else if (line.includes('RX bytes:')) {
- var rxMatch = line.match(/RX bytes:\d+ \(([\d.]+\s*[a-zA-Z]+)\)/);
- if (rxMatch && rxMatch[1]) {
- parsedInfo.rxBytes = rxMatch[1];
- }
- var txMatch = line.match(/TX bytes:\d+ \(([\d.]+\s*[a-zA-Z]+)\)/);
- if (txMatch && txMatch[1]) {
- parsedInfo.txBytes = txMatch[1];
- }
- }
- });
-
- return parsedInfo;
- });
- });
- });
- },
-
- render: function(data) {
- var title = E('h2', {class: 'content'}, _('ZeroTier'));
- var desc = E('div', {class: 'cbi-map-descr'}, _('ZeroTier is an open source, cross-platform and easy to use virtual LAN.'));
-
- if (!Array.isArray(data)) {
- return E('div', {}, [title, desc, E('div', {}, _('No interface online.'))]);
- }
- var rows = data.flatMap(function(interfaceData) {
- return [
- E('th', {class: 'th', colspan: '2'}, _('Network Interface Information')),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('Interface Name')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.name)
- ]),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('MAC Address')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.mac)
- ]),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('IPv4 Address')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.ipv4)
- ]),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('IPv6 Address')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.ipv6)
- ]),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('MTU')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.mtu)
- ]),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('Total Download')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.rxBytes)
- ]),
- E('tr', {class: 'tr'}, [
- E('td', {class: 'td left', width: '25%'}, _('Total Upload')),
- E('td', {class: 'td left', width: '25%'}, interfaceData.txBytes)
- ])
- ];
- });
-
- return E('div', {}, [title, desc, E('table', { 'class': 'table' }, rows)]);
- },
-
- handleSaveApply: null,
- handleSave: null,
- handleReset: null
-});
diff --git a/luci-app-zerotier/po/templates/zerotier.pot b/luci-app-zerotier/po/templates/zerotier.pot
deleted file mode 100644
index b8619f45..00000000
--- a/luci-app-zerotier/po/templates/zerotier.pot
+++ /dev/null
@@ -1,112 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:80
-msgid "Allow ZeroTier clients access your LAN network."
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:79
-msgid "Auto NAT clients"
-msgstr ""
-
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:14
-msgid "Base settings"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:66
-msgid "Collecting data ..."
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:85
-msgid ""
-"Create or manage your ZeroTier network, and auth clients who could access."
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:72
-msgid "Enable"
-msgstr ""
-
-#: applications/luci-app-zerotier/root/usr/share/rpcd/acl.d/luci-app-zerotier.json:3
-msgid "Grant access to ZeroTier configuration"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:91
-msgid "IPv4 Address"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:95
-msgid "IPv6 Address"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:83
-msgid "Interface Name"
-msgstr ""
-
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:22
-msgid "Interface info"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:87
-msgid "MAC Address"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:99
-msgid "MTU"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:36
-msgid "NOT RUNNING"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:76
-msgid "Network ID"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:81
-msgid "Network Interface Information"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:77
-msgid "No interface online."
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:86
-msgid "Open website"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:34
-msgid "RUNNING"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:103
-msgid "Total Download"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:107
-msgid "Total Upload"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:30
-msgid "Unable to get interface %s info: %s."
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:15
-msgid "Unable to get interface info: %s."
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:34
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:36
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:52
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:73
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:3
-msgid "ZeroTier"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:84
-msgid "ZeroTier Central"
-msgstr ""
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:53
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:74
-msgid "ZeroTier is an open source, cross-platform and easy to use virtual LAN."
-msgstr ""
diff --git a/luci-app-zerotier/po/zh-cn b/luci-app-zerotier/po/zh-cn
deleted file mode 120000
index 8d69574d..00000000
--- a/luci-app-zerotier/po/zh-cn
+++ /dev/null
@@ -1 +0,0 @@
-zh_Hans
\ No newline at end of file
diff --git a/luci-app-zerotier/po/zh_Hans/zerotier.po b/luci-app-zerotier/po/zh_Hans/zerotier.po
deleted file mode 100644
index 76f51b53..00000000
--- a/luci-app-zerotier/po/zh_Hans/zerotier.po
+++ /dev/null
@@ -1,118 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: zh_Hans\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:80
-msgid "Allow ZeroTier clients access your LAN network."
-msgstr "允许 ZeroTier 客户端访问您的局域网。"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:79
-msgid "Auto NAT clients"
-msgstr "自动客户端 NAT"
-
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:14
-msgid "Base settings"
-msgstr "基本设置"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:66
-msgid "Collecting data ..."
-msgstr "收集数据中 ..."
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:85
-msgid ""
-"Create or manage your ZeroTier network, and auth clients who could access."
-msgstr "创建或管理您的 ZeroTier 网络,并允许客户端接入。"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:72
-msgid "Enable"
-msgstr "启用"
-
-#: applications/luci-app-zerotier/root/usr/share/rpcd/acl.d/luci-app-zerotier.json:3
-msgid "Grant access to ZeroTier configuration"
-msgstr "授予访问 ZeroTier 配置的权限"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:91
-msgid "IPv4 Address"
-msgstr "IPv4 地址"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:95
-msgid "IPv6 Address"
-msgstr "IPv6 地址"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:83
-msgid "Interface Name"
-msgstr "接口名称"
-
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:22
-msgid "Interface info"
-msgstr "接口信息"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:87
-msgid "MAC Address"
-msgstr "MAC 地址"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:99
-msgid "MTU"
-msgstr "MTU"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:36
-msgid "NOT RUNNING"
-msgstr "未运行"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:76
-msgid "Network ID"
-msgstr "网络 ID"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:81
-msgid "Network Interface Information"
-msgstr "网络接口信息"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:77
-msgid "No interface online."
-msgstr "没有在线的接口。"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:86
-msgid "Open website"
-msgstr "打开网站"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:34
-msgid "RUNNING"
-msgstr "运行中"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:103
-msgid "Total Download"
-msgstr "总下载"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:107
-msgid "Total Upload"
-msgstr "总上传"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:30
-msgid "Unable to get interface %s info: %s."
-msgstr "无法获取接口 %s 的信息:%s。"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:15
-msgid "Unable to get interface info: %s."
-msgstr "无法获取接口信息:%s。"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:34
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:36
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:52
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:73
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:3
-msgid "ZeroTier"
-msgstr "ZeroTier"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:84
-msgid "ZeroTier Central"
-msgstr "ZeroTier 管理中心"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:53
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:74
-msgid "ZeroTier is an open source, cross-platform and easy to use virtual LAN."
-msgstr "ZeroTier 是一个开源、跨平台且易于使用的虚拟局域网 VPN。"
diff --git a/luci-app-zerotier/po/zh_Hant/zerotier.po b/luci-app-zerotier/po/zh_Hant/zerotier.po
deleted file mode 100644
index 9a6f0b3e..00000000
--- a/luci-app-zerotier/po/zh_Hant/zerotier.po
+++ /dev/null
@@ -1,118 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: zh_Hant\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:80
-msgid "Allow ZeroTier clients access your LAN network."
-msgstr "允許 ZeroTier 用戶端訪問您的區域網路"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:79
-msgid "Auto NAT clients"
-msgstr "自動 NAT 用戶端"
-
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:14
-msgid "Base settings"
-msgstr "基礎設定"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:66
-msgid "Collecting data ..."
-msgstr "收集資料中..."
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:85
-msgid ""
-"Create or manage your ZeroTier network, and auth clients who could access."
-msgstr "新建或管理您的 ZeroTier 網路,並授權用戶端訪問"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:72
-msgid "Enable"
-msgstr "啟用"
-
-#: applications/luci-app-zerotier/root/usr/share/rpcd/acl.d/luci-app-zerotier.json:3
-msgid "Grant access to ZeroTier configuration"
-msgstr "允許訪問 ZeroTier 的配置"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:91
-msgid "IPv4 Address"
-msgstr "IPv4 位址"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:95
-msgid "IPv6 Address"
-msgstr "IPv6 位址"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:83
-msgid "Interface Name"
-msgstr "介面名稱"
-
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:22
-msgid "Interface info"
-msgstr "介面資訊"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:87
-msgid "MAC Address"
-msgstr "MAC 位址"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:99
-msgid "MTU"
-msgstr "MTU"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:36
-msgid "NOT RUNNING"
-msgstr "尚未執行"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:76
-msgid "Network ID"
-msgstr "網路 ID"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:81
-msgid "Network Interface Information"
-msgstr "網路介面資訊"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:77
-msgid "No interface online."
-msgstr "沒有介面在線上。"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:86
-msgid "Open website"
-msgstr "開啟網站"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:34
-msgid "RUNNING"
-msgstr "正在執行"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:103
-msgid "Total Download"
-msgstr "總下載量"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:107
-msgid "Total Upload"
-msgstr "總上傳量"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:30
-msgid "Unable to get interface %s info: %s."
-msgstr "無法取得介面 %s 的資訊:%s"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:15
-msgid "Unable to get interface info: %s."
-msgstr "無法取得介面資訊:%s"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:34
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:36
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:52
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:73
-#: applications/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json:3
-msgid "ZeroTier"
-msgstr "ZeroTier"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:84
-msgid "ZeroTier Central"
-msgstr "ZeroTier 管理中心"
-
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/base.js:53
-#: applications/luci-app-zerotier/htdocs/luci-static/resources/view/zerotier/interface.js:74
-msgid "ZeroTier is an open source, cross-platform and easy to use virtual LAN."
-msgstr "ZeroTier 是一個開源、跨平台且易於使用的虛擬區域網路 VPN"
diff --git a/luci-app-zerotier/root/etc/config/zerotier b/luci-app-zerotier/root/etc/config/zerotier
deleted file mode 100644
index 34b1ad34..00000000
--- a/luci-app-zerotier/root/etc/config/zerotier
+++ /dev/null
@@ -1,20 +0,0 @@
-
-config zerotier sample_config
- option enabled 0
-
- # persistent configuration folder (for ZT controller mode)
- #option config_path '/etc/zerotier'
- # copy to RAM to prevent writing to flash (for ZT controller mode)
- #option copy_config_path '1'
-
- #option port '9993'
-
- # path to the local.conf
- #option local_conf '/etc/zerotier.conf'
-
- # Generate secret on first start
- option secret ''
-
- # Join a public network called Earth
- list join '8056c2e21c000001'
- #list join ''
diff --git a/luci-app-zerotier/root/etc/hotplug.d/iface/40-zerotier b/luci-app-zerotier/root/etc/hotplug.d/iface/40-zerotier
deleted file mode 100644
index 6e977a11..00000000
--- a/luci-app-zerotier/root/etc/hotplug.d/iface/40-zerotier
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-zero_enable="$(uci get zerotier.sample_config.enabled)"
-nat_enable="$(uci get zerotier.sample_config.nat)"
-
-[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0
-[ "$ACTION" = ifupdate -a -z "$IFUPDATE_ADDRESSES" -a -z "$IFUPDATE_DATA" ] && exit 0
-[ "$zero_enable" -eq "1" -a "${nat_enable}" -eq "1" ] || exit 0
-/etc/zerotier.start > /tmp/zero.log 2>&1 &
diff --git a/luci-app-zerotier/root/etc/init.d/zerotier b/luci-app-zerotier/root/etc/init.d/zerotier
deleted file mode 100755
index 715df14d..00000000
--- a/luci-app-zerotier/root/etc/init.d/zerotier
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=99
-
-USE_PROCD=1
-
-PROG=/usr/bin/zerotier-one
-CONFIG_PATH=/var/lib/zerotier-one
-
-service_triggers() {
- procd_add_reload_trigger "zerotier"
- procd_add_interface_trigger "interface.*.up" wan /etc/init.d/zerotier restart
-}
-
-section_enabled() {
- config_get_bool enabled "$1" 'enabled' 0
- [ $enabled -gt 0 ]
-}
-
-start_instance() {
- local cfg="$1"
- local port secret config_path
- local ARGS=""
-
- if ! section_enabled "$cfg"; then
- echo "disabled in config"
- return 1
- fi
-
- [ -d /etc/config/zero ] || mkdir -p /etc/config/zero
- config_path=/etc/config/zero
-
- config_get_bool port $cfg 'port'
- config_get secret $cfg 'secret'
-
- # Remove existing link or folder
- rm -rf $CONFIG_PATH
-
- # Create link from CONFIG_PATH to config_path
- if [ -n "$config_path" -a "$config_path" != $CONFIG_PATH ]; then
- if [ ! -d "$config_path" ]; then
- echo "ZeroTier config_path does not exist: $config_path"
- return
- fi
-
- ln -s $config_path $CONFIG_PATH
- fi
-
- mkdir -p $CONFIG_PATH/networks.d
-
- if [ -n "$port" ]; then
- ARGS="$ARGS -p$port"
- fi
-
- if [ "$secret" = "generate" ]; then
- echo "Generate secret - please wait..."
- local sf="/tmp/zt.$cfg.secret"
-
- zerotier-idtool generate "$sf" > /dev/null
- [ $? -ne 0 ] && return 1
-
- secret="$(cat $sf)"
- rm "$sf"
-
- uci set zerotier.$cfg.secret="$secret"
- uci commit zerotier
- fi
-
- if [ -n "$secret" ]; then
- echo "$secret" > $CONFIG_PATH/identity.secret
- # make sure there is not previous identity.public
- rm -f $CONFIG_PATH/identity.public
- fi
-
- add_join() {
- # an (empty) config file will cause ZT to join a network
- touch $CONFIG_PATH/networks.d/$1.conf
- }
-
- config_list_foreach $cfg 'join' add_join
-
- procd_open_instance
- procd_set_param command $PROG $ARGS $CONFIG_PATH
- procd_set_param stderr 1
- procd_close_instance
-}
-
-start_service() {
- config_load 'zerotier'
- config_foreach start_instance 'zerotier'
- touch /tmp/zero.log && /etc/zerotier.start > /tmp/zero.log 2>&1 &
-}
-
-stop_instance() {
- rm -f /tmp/zero.log
- local cfg="$1"
-
- rm -f "/usr/share/nftables.d/chain-pre/forward/zerotier.nft" "/usr/share/nftables.d/chain-pre/srcnat/zerotier.nft"
- fw4 reload
- echo "zt interface rules removed!" > /tmp/zero.log 2>&1 &
-
- # Remove existing link or folder
- rm -f $CONFIG_PATH/networks.d/*.conf
- rm -rf $CONFIG_PATH
-}
-
-stop_service() {
- config_load 'zerotier'
- config_foreach stop_instance 'zerotier'
-}
-
-reload_service() {
- stop
- start
-}
diff --git a/luci-app-zerotier/root/etc/uci-defaults/40_luci-zerotier b/luci-app-zerotier/root/etc/uci-defaults/40_luci-zerotier
deleted file mode 100755
index 96639fb3..00000000
--- a/luci-app-zerotier/root/etc/uci-defaults/40_luci-zerotier
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
- delete ucitrack.@zerotier[-1]
- commit ucitrack
-
- delete firewall.zerotier
- commit firewall
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
diff --git a/luci-app-zerotier/root/etc/zerotier.start b/luci-app-zerotier/root/etc/zerotier.start
deleted file mode 100755
index 4eaa6c2a..00000000
--- a/luci-app-zerotier/root/etc/zerotier.start
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-
-zero_enable="$(uci get zerotier.sample_config.enabled)"
-[ "$zero_enable" -eq "1" ] || exit 1
-
-count=0
-[ -f "/tmp/zero.log" ] && {
- while [ -z "$(ifconfig | grep 'zt' | awk '{print $1}')" ]
- do
- sleep 2
- let count++
- [ "$count" -lt 5 ] || exit 19
- done
-}
-
-nft_incdir="/usr/share/nftables.d/chain-pre"
-rm -f "$nft_incdir/input/zerotier.nft" "$nft_incdir/forward/zerotier.nft" "$$nft_incdir/srcnat/zerotier.nft"
-
-nat_enable="$(uci get zerotier.sample_config.nat)"
-[ "$nat_enable" -eq "1" ] && {
- [ -d "$nft_incdir/input" ] || mkdir -p "$nft_incdir/input"
- [ -d "$nft_incdir/forward" ] || mkdir -p "$nft_incdir/forward"
- [ -d "$nft_incdir/srcnat" ] || mkdir -p "$nft_incdir/srcnat"
- for i in $(ifconfig | grep 'zt' | awk '{print $1}')
- do
- ip_segment="$(ip route | grep "dev $i proto kernel" | awk '{print $1}')"
- echo "iifname $i counter accept comment \"!fw4: Zerotier allow inbound $i\"" >> "$nft_incdir/input/zerotier.nft"
- echo "iifname $i counter accept comment \"!fw4: Zerotier allow inbound forward $i\"" >> "$nft_incdir/forward/zerotier.nft"
- echo "oifname $i counter accept comment \"!fw4: Zerotier allow outbound forward $i\"" >> "$nft_incdir/forward/zerotier.nft"
- echo "oifname $i counter masquerade comment \"!fw4: Zerotier $i outbound postrouting masq\"" >> "$nft_incdir/srcnat/zerotier.nft"
- [ -z "$ip_segment" ] || echo "ip saddr $ip_segment counter masquerade comment \"!fw4: Zerotier $ip_segment postrouting masq\"" >> "$nft_incdir/srcnat/zerotier.nft"
- done
- echo "zt interface rules added!" > "/tmp/zero.log"
- uci -q set firewall.@defaults[0].auto_includes="1"
- uci -q commit firewall
- fw4 reload
-}
diff --git a/luci-app-zerotier/root/etc/zerotier/zerotier.log b/luci-app-zerotier/root/etc/zerotier/zerotier.log
deleted file mode 100644
index e69de29b..00000000
diff --git a/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json b/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json
deleted file mode 100644
index 956d9e47..00000000
--- a/luci-app-zerotier/root/usr/share/luci/menu.d/luci-app-zerotier.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "admin/vpn/zerotier": {
- "title": "ZeroTier",
- "order": 90,
- "action": {
- "type": "firstchild"
- },
- "depends": {
- "acl": [ "luci-app-zerotier" ],
- "uci": { "zerotier": true }
- }
- },
- "admin/vpn/zerotier/base": {
- "title": "Base settings",
- "order": 10,
- "action": {
- "type": "view",
- "path": "zerotier/base"
- }
- },
- "admin/vpn/zerotier/interface": {
- "title": "Interface info",
- "order": 20,
- "action": {
- "type": "view",
- "path": "zerotier/interface"
- }
- }
-}
diff --git a/luci-app-zerotier/root/usr/share/rpcd/acl.d/luci-app-zerotier.json b/luci-app-zerotier/root/usr/share/rpcd/acl.d/luci-app-zerotier.json
deleted file mode 100644
index 656cb3c0..00000000
--- a/luci-app-zerotier/root/usr/share/rpcd/acl.d/luci-app-zerotier.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "luci-app-zerotier": {
- "description": "Grant access to ZeroTier configuration",
- "read": {
- "file": {
- "/sbin/ifconfig": [ "exec" ]
- },
- "ubus": {
- "service": [ "list" ]
- },
- "uci": [ "zerotier" ]
- },
- "write": {
- "uci": [ "zerotier" ]
- }
- }
-}