From 483102bb6ef7995e1f8daa323e43a2ad8a3c1642 Mon Sep 17 00:00:00 2001 From: cxzlw Date: Tue, 26 Sep 2023 10:42:13 +0800 Subject: [PATCH] Site updated: 2023-09-26 10:42:13 --- 2023/07/05/trace-of-line-01/index.html | 2 +- 2023/07/05/zhihu-aac-old/index.html | 2 +- 2023/07/06/zerotier-planet-convert/index.html | 12 +- 2023/07/10/trace-of-line-02/index.html | 2 +- .../permission-system-design-share/index.html | 12 +- 2023/08/04/test-latex/index.html | 2 +- .../08/python-to-windows-service/index.html | 745 ---------------- 2023/08/22/eca-i-am-interested-in/index.html | 802 ------------------ 2023/08/31/cell-structure/index.html | 6 +- about/index.html | 2 +- archives/2023/07/index.html | 2 +- archives/2023/08/index.html | 14 +- archives/2023/index.html | 14 +- archives/index.html | 14 +- index.html | 83 +- local-search.xml | 44 +- sitemap.xml | 76 +- sw.js | 2 +- tags/Nuitka/index.html | 410 --------- tags/Python/index.html | 8 +- tags/Windows-service/index.html | 410 --------- tags/cxzlw/index.html | 8 +- tags/index.html | 2 +- 23 files changed, 55 insertions(+), 2619 deletions(-) delete mode 100644 2023/08/08/python-to-windows-service/index.html delete mode 100644 2023/08/22/eca-i-am-interested-in/index.html delete mode 100644 tags/Nuitka/index.html delete mode 100644 tags/Windows-service/index.html diff --git a/2023/07/05/trace-of-line-01/index.html b/2023/07/05/trace-of-line-01/index.html index 6ca3245..6ee6757 100644 --- a/2023/07/05/trace-of-line-01/index.html +++ b/2023/07/05/trace-of-line-01/index.html @@ -24,7 +24,7 @@ - + diff --git a/2023/07/05/zhihu-aac-old/index.html b/2023/07/05/zhihu-aac-old/index.html index 51faa89..d484c19 100644 --- a/2023/07/05/zhihu-aac-old/index.html +++ b/2023/07/05/zhihu-aac-old/index.html @@ -25,7 +25,7 @@ - + diff --git a/2023/07/06/zerotier-planet-convert/index.html b/2023/07/06/zerotier-planet-convert/index.html index 1907a2d..c5ecc15 100644 --- a/2023/07/06/zerotier-planet-convert/index.html +++ b/2023/07/06/zerotier-planet-convert/index.html @@ -24,7 +24,7 @@ - + @@ -254,7 +254,7 @@ - 62 分钟 + 61 分钟 @@ -304,7 +304,7 @@

Zerotier 自定义 Planet 后与标准节点互通

-

由于国内特殊的网络原因[1],Zerotier 官方提供的 Planet 用户体验不佳。为此,不少人选择自建私有 Moon,甚至私有 Planet 服务器。然而,正如官方文档所说[2],使用私有 Planet 服务器会使你的节点无法找到其他的标准节点。本文试图提出一种方案在使用私有 Planet 服务器的同时与标准节点通信。

+

由于国内特殊的网络原因[1],Zerotier 官方提供的 Planet 用户体验不佳。为此,不少人选择自建私有 Moon,甚至私有 Planet 服务器。然而,正如官方文档[2]所说,使用私有 Planet 服务器会使你的节点无法找到其他的标准节点。本文试图提出一种方案在使用私有 Planet 服务器的同时与标准节点通信。

一、生成 moon.json

这步主要是为了一个模板:

1
2
cd C:\ProgramData\ZeroTier\One
zerotier-idtool initmoon identity.public >> planet.json
@@ -323,14 +323,14 @@

四、生成 .moon 文件

1
zerotier-idtool genmoon .\moon.json
-

五、使用 .moon 文件

在 Zerotier 目录[3]下新建文件夹 moons.d。

+

五、使用 .moon 文件

在 Zerotier 目录[3]下新建文件夹 moons.d。

把生成的 xxxxxxxxxxxxxxxx.moon 放到你的 moons.d文件夹。

重启 Zerotier 服务(不会重启的建议重启电脑)。

这样就好了,你可以开始享用你的自定义 Planet 带来的低延迟体验和官方 Planet 上大量的节点了

结语

在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。

  1. 不作评价 -
  2. If you are using a custom root setup, your nodes won’t be able to find standard nodes. 如果你使用自定义根配置,你的节点将无法找到其他标准节点。 -
  3. Linux 是 /var/lib/zerotier-one,Windows 是 C:\ProgramData\ZeroTier\One\,别的不知道。 +
  4. Introduction | ZeroTier Documentation如果你使用自定义根配置,你的节点将无法找到其他标准节点。 +
  5. Linux 是 /var/lib/zerotier-one,Windows 是 C:\ProgramData\ZeroTier\One\
diff --git a/2023/07/10/trace-of-line-02/index.html b/2023/07/10/trace-of-line-02/index.html index c56aa34..8de2019 100644 --- a/2023/07/10/trace-of-line-02/index.html +++ b/2023/07/10/trace-of-line-02/index.html @@ -24,7 +24,7 @@ - + diff --git a/2023/08/04/permission-system-design-share/index.html b/2023/08/04/permission-system-design-share/index.html index 2faa433..895b8b8 100644 --- a/2023/08/04/permission-system-design-share/index.html +++ b/2023/08/04/permission-system-design-share/index.html @@ -24,11 +24,11 @@ - + - + @@ -361,12 +361,12 @@

- #权限系统 - #Python #cxzlw + #权限系统 + @@ -428,9 +428,9 @@

- + - 将 Python 项目打包为 Windows service + Biology - Cell structure 上一篇 diff --git a/2023/08/04/test-latex/index.html b/2023/08/04/test-latex/index.html index cd81289..feea99e 100644 --- a/2023/08/04/test-latex/index.html +++ b/2023/08/04/test-latex/index.html @@ -24,7 +24,7 @@ - + diff --git a/2023/08/08/python-to-windows-service/index.html b/2023/08/08/python-to-windows-service/index.html deleted file mode 100644 index c92efbb..0000000 --- a/2023/08/08/python-to-windows-service/index.html +++ /dev/null @@ -1,745 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 将 Python 项目打包为 Windows service - 创新者.老王的博客 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - -
- -
- -
- - - -
-
-
- - -
- -
-
-
-
-

将 Python 项目打包为 Windows service

- - -
- -

今天想把一个 Python 项目用 Nuitka 打包后设为开机自启。突然发现 Nuitka Commercial 可以把 Python 项目打包为 Windows service, 然而要钱(这周生活费够不够我吃的都是个问题……)。当然人家也给出了 win32service 这个东西,那自然要看看。

-
-

前排提醒,我还没解决没网络权限的问题 :(

-
- -

一、安装

安装主要是 pywin32nuitka

-
1
pip install nuitka pywin32
- -

原程序

1
2
3
4
5
from app import app

if __name__ == '__main__':
app.run("0.0.0.0", 8899)

- -

二、改为 Windows service

参考 An example Windows service implemented with pywin32 wrappers. #python #windows-service #pywin32 · GitHubPython Windows service pyinstaller executables error 1053 - Stack Overflow,将上面的代码改成这样

-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# Filename: windows_service_entry

import sys

import servicemanager
import win32serviceutil

from app import app
from win32serviceutil import ServiceFramework


class WinSvcEntry(ServiceFramework):
_svc_name_ = "StandaloneLicenseServer"
_svc_display_name_ = "Standalone License Server"
_svc_description_ = "Standalone License Server by cxzlw"

def __init__(self, args):
super().__init__(args)
self.running = False

def SvcDoRun(self):
app.run("0.0.0.0", 8899)

def SvcStop(self):
app.stop()


if __name__ == '__main__':
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(WinSvcEntry)
servicemanager.StartServiceCtrlDispatcher()
else:
win32serviceutil.HandleCommandLine(WinSvcEntry)

- -

然后用 Nuitka 打包

-
1
nuitka windows_service_entry.py --follow-imports --standalone
- -

跑起来,记得带管理员权限。然后不出所料地,炸了……

-
1
ModuleNotFoundError: No module named 'win32timezone'
- -

win32timezone 加到 Nuitka 的 --include-module 里面,再打包

-
1
nuitka windows_service_entry.py --follow-imports --standalone --include-module="win32timezone"
- -

三、运行/安装

安装

-
1
windows_service_entry.exe install
- -

更新

-
1
windows_service_entry.exe update
- -

启动

-
1
windows_service_entry.exe start
- -

停止

-
1
windows_service_entry.exe stop
- -

四、限制

需要注意的是,这样跑起来的 service 并没有权限访问网络。这个问题到现在我也没解决,可以期待一下接下来的一篇文章(也失败了,就不发了 :( )。

-

唉,要说运行一个 Web server 肯定是失败了。但是作为一个 Windows service,还是可以跑的……

-

同时,如果有相应的解决方案的,欢迎告诉我,谢谢。

- - -
- -
-
- - - - - - -
-
-
将 Python 项目打包为 Windows service
-
https://blog.cxzlw.top/2023/08/08/python-to-windows-service/
-
-
- -
-
作者
-
cxzlw
-
- - -
-
发布于
-
2023年8月8日
-
- - - -
-
-
- - - - -
- - -
- -
- - - - -
- -
-
-
-
- - - - -
- - - -
-
-
-
- -
- - - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/2023/08/22/eca-i-am-interested-in/index.html b/2023/08/22/eca-i-am-interested-in/index.html deleted file mode 100644 index 9a4e7d5..0000000 --- a/2023/08/22/eca-i-am-interested-in/index.html +++ /dev/null @@ -1,802 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 我感兴趣的社团及时间 - 创新者.老王的博客 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - -
- -
- -
- - - -
-
-
- - -
- -
-
-
-
-

我感兴趣的社团及时间

- - -
- -

在这整理一下

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ECAtimewantchosenotes
Minecraft Technology周一 中午YESMaybe No Attendance?
Mathematics For Everyone周一 16:30参加一半就全给 Present
ML x AI周一 16:30YESYES
A+ Lit Club周一 16:30
SCIE DEV周二 16:30YESYES
TBU周二中午YES
Bonvoy 旅享家周二下午
FRC 机器人周二 16:30
(FFE) Behavior Finance Frontier周二 16:30 - 17:20
Web Frontend Development周三下午YES全给 Present,没了??
Neuro Boost周四 16:30 - 17:30
Advanced Math & Computer Science周四 16:40 - 17:40
聚光文学社周五 15:10 - 16:00
- - -
- -
-
- - - - - - -
-
-
我感兴趣的社团及时间
-
https://blog.cxzlw.top/2023/08/22/eca-i-am-interested-in/
-
-
- -
-
作者
-
cxzlw
-
- - -
-
发布于
-
2023年8月22日
-
- - - -
-
-
- - - - -
- - -
- -
- - - - -
- -
-
-
-
- - - - -
- - - -
-
-
-
- -
- - - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/2023/08/31/cell-structure/index.html b/2023/08/31/cell-structure/index.html index b95f449..892f7aa 100644 --- a/2023/08/31/cell-structure/index.html +++ b/2023/08/31/cell-structure/index.html @@ -27,7 +27,7 @@ - + @@ -563,8 +563,8 @@

- - 我感兴趣的社团及时间 + + 分享一个 Python 权限系统库的设计 下一篇 diff --git a/about/index.html b/about/index.html index 1702a37..19f64d4 100644 --- a/about/index.html +++ b/about/index.html @@ -24,7 +24,7 @@ - + diff --git a/archives/2023/07/index.html b/archives/2023/07/index.html index 3c5a265..80b9458 100644 --- a/archives/2023/07/index.html +++ b/archives/2023/07/index.html @@ -238,7 +238,7 @@
-

共计 9 篇文章

+

共计 7 篇文章


diff --git a/archives/2023/08/index.html b/archives/2023/08/index.html index a9ce2db..8487a95 100644 --- a/archives/2023/08/index.html +++ b/archives/2023/08/index.html @@ -238,7 +238,7 @@
-

共计 9 篇文章

+

共计 7 篇文章


@@ -252,18 +252,6 @@ - - -
我感兴趣的社团及时间
-
- - - - -
将 Python 项目打包为 Windows service
-
- -
分享一个 Python 权限系统库的设计
diff --git a/archives/2023/index.html b/archives/2023/index.html index 3da69a8..e06c423 100644 --- a/archives/2023/index.html +++ b/archives/2023/index.html @@ -238,7 +238,7 @@
-

共计 9 篇文章

+

共计 7 篇文章


@@ -252,18 +252,6 @@
- - -
我感兴趣的社团及时间
-
- - - - -
将 Python 项目打包为 Windows service
-
- -
分享一个 Python 权限系统库的设计
diff --git a/archives/index.html b/archives/index.html index d61f4c6..a9f7fe8 100644 --- a/archives/index.html +++ b/archives/index.html @@ -238,7 +238,7 @@
- - - -
@@ -386,12 +307,12 @@

diff --git a/local-search.xml b/local-search.xml index cc7b83f..be1e20b 100644 --- a/local-search.xml +++ b/local-search.xml @@ -16,44 +16,6 @@ - - 我感兴趣的社团及时间 - - /2023/08/22/eca-i-am-interested-in/ - - 在这整理一下

ECAtimewantchosenotes
Minecraft Technology周一 中午YESMaybe No Attendance?
Mathematics For Everyone周一 16:30参加一半就全给 Present
ML x AI周一 16:30YESYES
A+ Lit Club周一 16:30
SCIE DEV周二 16:30YESYES
TBU周二中午YES
Bonvoy 旅享家周二下午
FRC 机器人周二 16:30
(FFE) Behavior Finance Frontier周二 16:30 - 17:20
Web Frontend Development周三下午YES全给 Present,没了??
Neuro Boost周四 16:30 - 17:30
Advanced Math & Computer Science周四 16:40 - 17:40
聚光文学社周五 15:10 - 16:00
]]>
- - - -
- - - - - 将 Python 项目打包为 Windows service - - /2023/08/08/python-to-windows-service/ - - 今天想把一个 Python 项目用 Nuitka 打包后设为开机自启。突然发现 Nuitka Commercial 可以把 Python 项目打包为 Windows service, 然而要钱(这周生活费够不够我吃的都是个问题……)。当然人家也给出了 win32service 这个东西,那自然要看看。

前排提醒,我还没解决没网络权限的问题 :(

一、安装

安装主要是 pywin32nuitka

1
pip install nuitka pywin32

原程序

1
2
3
4
5
from app import app

if __name__ == '__main__':
app.run("0.0.0.0", 8899)

二、改为 Windows service

参考 An example Windows service implemented with pywin32 wrappers. #python #windows-service #pywin32 · GitHubPython Windows service pyinstaller executables error 1053 - Stack Overflow,将上面的代码改成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# Filename: windows_service_entry

import sys

import servicemanager
import win32serviceutil

from app import app
from win32serviceutil import ServiceFramework


class WinSvcEntry(ServiceFramework):
_svc_name_ = "StandaloneLicenseServer"
_svc_display_name_ = "Standalone License Server"
_svc_description_ = "Standalone License Server by cxzlw"

def __init__(self, args):
super().__init__(args)
self.running = False

def SvcDoRun(self):
app.run("0.0.0.0", 8899)

def SvcStop(self):
app.stop()


if __name__ == '__main__':
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(WinSvcEntry)
servicemanager.StartServiceCtrlDispatcher()
else:
win32serviceutil.HandleCommandLine(WinSvcEntry)

然后用 Nuitka 打包

1
nuitka windows_service_entry.py --follow-imports --standalone

跑起来,记得带管理员权限。然后不出所料地,炸了……

1
ModuleNotFoundError: No module named 'win32timezone'

win32timezone 加到 Nuitka 的 --include-module 里面,再打包

1
nuitka windows_service_entry.py --follow-imports --standalone --include-module="win32timezone"

三、运行/安装

安装

1
windows_service_entry.exe install

更新

1
windows_service_entry.exe update

启动

1
windows_service_entry.exe start

停止

1
windows_service_entry.exe stop

四、限制

需要注意的是,这样跑起来的 service 并没有权限访问网络。这个问题到现在我也没解决,可以期待一下接下来的一篇文章(也失败了,就不发了 :( )。

唉,要说运行一个 Web server 肯定是失败了。但是作为一个 Windows service,还是可以跑的……

同时,如果有相应的解决方案的,欢迎告诉我,谢谢。

]]>
- - - - - - Python - - cxzlw - - Windows service - - Nuitka - - - -
- - - 分享一个 Python 权限系统库的设计 @@ -65,12 +27,12 @@ - 权限系统 - Python cxzlw + 权限系统 + @@ -120,7 +82,7 @@ /2023/07/06/zerotier-planet-convert/ - 由于国内特殊的网络原因[1],Zerotier 官方提供的 Planet 用户体验不佳。为此,不少人选择自建私有 Moon,甚至私有 Planet 服务器。然而,正如官方文档所说[2],使用私有 Planet 服务器会使你的节点无法找到其他的标准节点。本文试图提出一种方案在使用私有 Planet 服务器的同时与标准节点通信。

一、生成 moon.json

这步主要是为了一个模板:

1
2
cd C:\ProgramData\ZeroTier\One
zerotier-idtool initmoon identity.public >> planet.json

得到的 json:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"id": "xxx",
"objtype": "world",
"roots": [
{
"identity": "xxx",
"stableEndpoints": []
}
],
"signingKey": "xxx",
"signingKey_SECRET": "xxx",
"updatesMustBeSignedBy": "xxx",
"worldType": "moon"
}

二、获得官方 Planet 的 identity 和 stableEndpoints

使用以下代码(照着 attic/world/mkworld.cpp 和 node/Topology.cpp 改的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <node/C25519.hpp>
#include <node/Identity.hpp>
#include <node/InetAddress.hpp>
#include <node/World.hpp>

#define ZT_DEFAULT_WORLD_LENGTH 570 // 这俩行来自 Topology.cpp
static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x7e,0xe9,0x57,0x60,0xcd,0xb8,0xb3,0x88,0xa4,0x69,0x22,0x14,0x91,0xaa,0x9a,0xcd,0x66,0xcc,0x76,0x4c,0xde,0xfd,0x56,0x03,0x9f,0x10,0x67,0xae,0x15,0xe6,0x9c,0x6f,0xb4,0x2d,0x7b,0x55,0x33,0x0e,0x3f,0xda,0xac,0x52,0x9c,0x07,0x92,0xfd,0x73,0x40,0xa6,0xaa,0x21,0xab,0xa8,0xa4,0x89,0xfd,0xae,0xa4,0x4a,0x39,0xbf,0x2d,0x00,0x65,0x9a,0xc9,0xc8,0x18,0xeb,0x36,0x00,0x92,0x76,0x37,0xef,0x4d,0x14,0x04,0xa4,0x4d,0x54,0x46,0x84,0x85,0x13,0x79,0x75,0x1f,0xaa,0x79,0xb4,0xc4,0xea,0x85,0x04,0x01,0x75,0xea,0x06,0x58,0x60,0x48,0x24,0x02,0xe1,0xeb,0x34,0x20,0x52,0x00,0x0e,0x62,0x90,0x06,0x1a,0x9b,0xe0,0xcd,0x29,0x3c,0x8b,0x55,0xf1,0xc3,0xd2,0x52,0x48,0x08,0xaf,0xc5,0x49,0x22,0x08,0x0e,0x35,0x39,0xa7,0x5a,0xdd,0xc3,0xce,0xf0,0xf6,0xad,0x26,0x0d,0x58,0x82,0x93,0xbb,0x77,0x86,0xe7,0x1e,0xfa,0x4b,0x90,0x57,0xda,0xd9,0x86,0x7a,0xfe,0x12,0xdd,0x04,0xca,0xfe,0x9e,0xfe,0xb9,0x00,0xcc,0xde,0xf7,0x6b,0xc7,0xb9,0x7d,0xed,0x90,0x4e,0xab,0xc5,0xdf,0x09,0x88,0x6d,0x9c,0x15,0x14,0xa6,0x10,0x03,0x6c,0xb9,0x13,0x9c,0xc2,0x14,0x00,0x1a,0x29,0x58,0x97,0x8e,0xfc,0xec,0x15,0x71,0x2d,0xd3,0x94,0x8c,0x6e,0x6b,0x3a,0x8e,0x89,0x3d,0xf0,0x1f,0xf4,0x93,0xd1,0xf8,0xd9,0x80,0x6a,0x86,0x0c,0x54,0x20,0x57,0x1b,0xf0,0x00,0x02,0x04,0x68,0xc2,0x08,0x86,0x27,0x09,0x06,0x26,0x05,0x98,0x80,0x02,0x00,0x12,0x00,0x00,0x30,0x05,0x71,0x0e,0x34,0x00,0x51,0x27,0x09,0x77,0x8c,0xde,0x71,0x90,0x00,0x3f,0x66,0x81,0xa9,0x9e,0x5a,0xd1,0x89,0x5e,0x9f,0xba,0x33,0xe6,0x21,0x2d,0x44,0x54,0xe1,0x68,0xbc,0xec,0x71,0x12,0x10,0x1b,0xf0,0x00,0x95,0x6e,0xd8,0xe9,0x2e,0x42,0x89,0x2c,0xb6,0xf2,0xec,0x41,0x08,0x81,0xa8,0x4a,0xb1,0x9d,0xa5,0x0e,0x12,0x87,0xba,0x3d,0x92,0x6c,0x3a,0x1f,0x75,0x5c,0xcc,0xf2,0x99,0xa1,0x20,0x70,0x55,0x00,0x02,0x04,0x67,0xc3,0x67,0x42,0x27,0x09,0x06,0x26,0x05,0x98,0x80,0x04,0x00,0x00,0xc3,0x02,0x54,0xf2,0xbc,0xa1,0xf7,0x00,0x19,0x27,0x09,0x62,0xf8,0x65,0xae,0x71,0x00,0xe2,0x07,0x6c,0x57,0xde,0x87,0x0e,0x62,0x88,0xd7,0xd5,0xe7,0x40,0x44,0x08,0xb1,0x54,0x5e,0xfc,0xa3,0x7d,0x67,0xf7,0x7b,0x87,0xe9,0xe5,0x41,0x68,0xc2,0x5d,0x3e,0xf1,0xa9,0xab,0xf2,0x90,0x5e,0xa5,0xe7,0x85,0xc0,0x1d,0xff,0x23,0x88,0x7a,0xd4,0x23,0x2d,0x95,0xc7,0xa8,0xfd,0x2c,0x27,0x11,0x1a,0x72,0xbd,0x15,0x93,0x22,0xdc,0x00,0x02,0x04,0x32,0x07,0xfc,0x8a,0x27,0x09,0x06,0x20,0x01,0x49,0xf0,0xd0,0xdb,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x27,0x09,0xca,0xfe,0x04,0xeb,0xa9,0x00,0x6c,0x6a,0x9d,0x1d,0xea,0x55,0xc1,0x61,0x6b,0xfe,0x2a,0x2b,0x8f,0x0f,0xf9,0xa8,0xca,0xca,0xf7,0x03,0x74,0xfb,0x1f,0x39,0xe3,0xbe,0xf8,0x1c,0xbf,0xeb,0xef,0x17,0xb7,0x22,0x82,0x68,0xa0,0xa2,0xa2,0x9d,0x34,0x88,0xc7,0x52,0x56,0x5c,0x6c,0x96,0x5c,0xbd,0x65,0x06,0xec,0x24,0x39,0x7c,0xc8,0xa5,0xd9,0xd1,0x52,0x85,0xa8,0x7f,0x00,0x02,0x04,0x54,0x11,0x35,0x9b,0x27,0x09,0x06,0x2a,0x02,0x6e,0xa0,0xd4,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x93,0x27,0x09};

using namespace ZeroTier;

int main()
{
World world;
world.deserialize(Buffer<ZT_DEFAULT_WORLD_LENGTH>(ZT_DEFAULT_WORLD, ZT_DEFAULT_WORLD_LENGTH), 0);

for (const auto& root : world.roots()) {
char buf[ZT_IDENTITY_STRING_BUFFER_LENGTH];
std::cout << root.identity.toString(false, buf) << "\n";
for (const auto& sp : root.stableEndpoints) {
char buf2[ZT_IDENTITY_STRING_BUFFER_LENGTH];
std::cout << sp.toString(buf2) << "\n";
}
std::cout << "\n";
}
}

以上代码发布在ZeroTierOne/attic/world/read_planet.cpp at dev · cxzlw/ZeroTierOne · GitHub

运行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cafe9efeb9:0:ccdef76bc7b97ded904eabc5df09886d9c1514a610036cb9139cc214001a2958978efcec15712dd3948c6e6b3a8e893df01ff493d1f8d9806a860c5420571bf0
104.194.8.134/9993
2605:9880:200:1200:30:571:e34:51/9993

778cde7190:0:3f6681a99e5ad1895e9fba33e6212d4454e168bcec7112101bf000956ed8e92e42892cb6f2ec410881a84ab19da50e1287ba3d926c3a1f755cccf299a1207055
103.195.103.66/9993
2605:9880:400:c3:254:f2bc:a1f7:19/9993

62f865ae71:0:e2076c57de870e6288d7d5e7404408b1545efca37d67f77b87e9e54168c25d3ef1a9abf2905ea5e785c01dff23887ad4232d95c7a8fd2c27111a72bd159322dc
50.7.252.138/9993
2001:49f0:d0db:2::2/9993

cafe04eba9:0:6c6a9d1dea55c1616bfe2a2b8f0ff9a8cacaf70374fb1f39e3bef81cbfebef17b7228268a0a2a29d3488c752565c6c965cbd6506ec24397cc8a5d9d15285a87f
84.17.53.155/9993
2a02:6ea0:d405::9993/9993

三、按照上述结果修改 moon.json

大概修改成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"id": "cafe9efeb9",
"objtype": "world",
"roots": [
{
"identity": "cafe9efeb9:0:ccdef76bc7b97ded904eabc5df09886d9c1514a610036cb9139cc214001a2958978efcec15712dd3948c6e6b3a8e893df01ff493d1f8d9806a860c5420571bf0",
"stableEndpoints": ["104.194.8.134/9993", "2605:9880:200:1200:30:571:e34:51/9993"]
},
{
"identity": "778cde7190:0:3f6681a99e5ad1895e9fba33e6212d4454e168bcec7112101bf000956ed8e92e42892cb6f2ec410881a84ab19da50e1287ba3d926c3a1f755cccf299a1207055",
"stableEndpoints": ["103.195.103.66/9993", "2605:9880:400:c3:254:f2bc:a1f7:19/9993"]
},
{
"identity": "62f865ae71:0:e2076c57de870e6288d7d5e7404408b1545efca37d67f77b87e9e54168c25d3ef1a9abf2905ea5e785c01dff23887ad4232d95c7a8fd2c27111a72bd159322dc",
"stableEndpoints": ["50.7.252.138/9993", "2001:49f0:d0db:2::2/9993"]
},
{
"identity": "cafe04eba9:0:6c6a9d1dea55c1616bfe2a2b8f0ff9a8cacaf70374fb1f39e3bef81cbfebef17b7228268a0a2a29d3488c752565c6c965cbd6506ec24397cc8a5d9d15285a87f",
"stableEndpoints": ["84.17.53.155/9993", "2a02:6ea0:d405::9993/9993"]
}
],
"signingKey": "xxx",
"signingKey_SECRET": "xxx",
"updatesMustBeSignedBy": "xxx",
"worldType": "moon"
}

四、生成 .moon 文件

1
zerotier-idtool genmoon .\moon.json

五、使用 .moon 文件

在 Zerotier 目录[3]下新建文件夹 moons.d。

把生成的 xxxxxxxxxxxxxxxx.moon 放到你的 moons.d文件夹。

重启 Zerotier 服务(不会重启的建议重启电脑)。

这样就好了,你可以开始享用你的自定义 Planet 带来的低延迟体验和官方 Planet 上大量的节点了

结语

在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。

  1. 不作评价
  2. If you are using a custom root setup, your nodes won’t be able to find standard nodes. 如果你使用自定义根配置,你的节点将无法找到其他标准节点。
  3. Linux 是 /var/lib/zerotier-one,Windows 是 C:\ProgramData\ZeroTier\One\,别的不知道。
]]>
+ 由于国内特殊的网络原因[1],Zerotier 官方提供的 Planet 用户体验不佳。为此,不少人选择自建私有 Moon,甚至私有 Planet 服务器。然而,正如官方文档[2]所说,使用私有 Planet 服务器会使你的节点无法找到其他的标准节点。本文试图提出一种方案在使用私有 Planet 服务器的同时与标准节点通信。

一、生成 moon.json

这步主要是为了一个模板:

1
2
cd C:\ProgramData\ZeroTier\One
zerotier-idtool initmoon identity.public >> planet.json

得到的 json:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"id": "xxx",
"objtype": "world",
"roots": [
{
"identity": "xxx",
"stableEndpoints": []
}
],
"signingKey": "xxx",
"signingKey_SECRET": "xxx",
"updatesMustBeSignedBy": "xxx",
"worldType": "moon"
}

二、获得官方 Planet 的 identity 和 stableEndpoints

使用以下代码(照着 attic/world/mkworld.cpp 和 node/Topology.cpp 改的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <node/C25519.hpp>
#include <node/Identity.hpp>
#include <node/InetAddress.hpp>
#include <node/World.hpp>

#define ZT_DEFAULT_WORLD_LENGTH 570 // 这俩行来自 Topology.cpp
static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x7e,0xe9,0x57,0x60,0xcd,0xb8,0xb3,0x88,0xa4,0x69,0x22,0x14,0x91,0xaa,0x9a,0xcd,0x66,0xcc,0x76,0x4c,0xde,0xfd,0x56,0x03,0x9f,0x10,0x67,0xae,0x15,0xe6,0x9c,0x6f,0xb4,0x2d,0x7b,0x55,0x33,0x0e,0x3f,0xda,0xac,0x52,0x9c,0x07,0x92,0xfd,0x73,0x40,0xa6,0xaa,0x21,0xab,0xa8,0xa4,0x89,0xfd,0xae,0xa4,0x4a,0x39,0xbf,0x2d,0x00,0x65,0x9a,0xc9,0xc8,0x18,0xeb,0x36,0x00,0x92,0x76,0x37,0xef,0x4d,0x14,0x04,0xa4,0x4d,0x54,0x46,0x84,0x85,0x13,0x79,0x75,0x1f,0xaa,0x79,0xb4,0xc4,0xea,0x85,0x04,0x01,0x75,0xea,0x06,0x58,0x60,0x48,0x24,0x02,0xe1,0xeb,0x34,0x20,0x52,0x00,0x0e,0x62,0x90,0x06,0x1a,0x9b,0xe0,0xcd,0x29,0x3c,0x8b,0x55,0xf1,0xc3,0xd2,0x52,0x48,0x08,0xaf,0xc5,0x49,0x22,0x08,0x0e,0x35,0x39,0xa7,0x5a,0xdd,0xc3,0xce,0xf0,0xf6,0xad,0x26,0x0d,0x58,0x82,0x93,0xbb,0x77,0x86,0xe7,0x1e,0xfa,0x4b,0x90,0x57,0xda,0xd9,0x86,0x7a,0xfe,0x12,0xdd,0x04,0xca,0xfe,0x9e,0xfe,0xb9,0x00,0xcc,0xde,0xf7,0x6b,0xc7,0xb9,0x7d,0xed,0x90,0x4e,0xab,0xc5,0xdf,0x09,0x88,0x6d,0x9c,0x15,0x14,0xa6,0x10,0x03,0x6c,0xb9,0x13,0x9c,0xc2,0x14,0x00,0x1a,0x29,0x58,0x97,0x8e,0xfc,0xec,0x15,0x71,0x2d,0xd3,0x94,0x8c,0x6e,0x6b,0x3a,0x8e,0x89,0x3d,0xf0,0x1f,0xf4,0x93,0xd1,0xf8,0xd9,0x80,0x6a,0x86,0x0c,0x54,0x20,0x57,0x1b,0xf0,0x00,0x02,0x04,0x68,0xc2,0x08,0x86,0x27,0x09,0x06,0x26,0x05,0x98,0x80,0x02,0x00,0x12,0x00,0x00,0x30,0x05,0x71,0x0e,0x34,0x00,0x51,0x27,0x09,0x77,0x8c,0xde,0x71,0x90,0x00,0x3f,0x66,0x81,0xa9,0x9e,0x5a,0xd1,0x89,0x5e,0x9f,0xba,0x33,0xe6,0x21,0x2d,0x44,0x54,0xe1,0x68,0xbc,0xec,0x71,0x12,0x10,0x1b,0xf0,0x00,0x95,0x6e,0xd8,0xe9,0x2e,0x42,0x89,0x2c,0xb6,0xf2,0xec,0x41,0x08,0x81,0xa8,0x4a,0xb1,0x9d,0xa5,0x0e,0x12,0x87,0xba,0x3d,0x92,0x6c,0x3a,0x1f,0x75,0x5c,0xcc,0xf2,0x99,0xa1,0x20,0x70,0x55,0x00,0x02,0x04,0x67,0xc3,0x67,0x42,0x27,0x09,0x06,0x26,0x05,0x98,0x80,0x04,0x00,0x00,0xc3,0x02,0x54,0xf2,0xbc,0xa1,0xf7,0x00,0x19,0x27,0x09,0x62,0xf8,0x65,0xae,0x71,0x00,0xe2,0x07,0x6c,0x57,0xde,0x87,0x0e,0x62,0x88,0xd7,0xd5,0xe7,0x40,0x44,0x08,0xb1,0x54,0x5e,0xfc,0xa3,0x7d,0x67,0xf7,0x7b,0x87,0xe9,0xe5,0x41,0x68,0xc2,0x5d,0x3e,0xf1,0xa9,0xab,0xf2,0x90,0x5e,0xa5,0xe7,0x85,0xc0,0x1d,0xff,0x23,0x88,0x7a,0xd4,0x23,0x2d,0x95,0xc7,0xa8,0xfd,0x2c,0x27,0x11,0x1a,0x72,0xbd,0x15,0x93,0x22,0xdc,0x00,0x02,0x04,0x32,0x07,0xfc,0x8a,0x27,0x09,0x06,0x20,0x01,0x49,0xf0,0xd0,0xdb,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x27,0x09,0xca,0xfe,0x04,0xeb,0xa9,0x00,0x6c,0x6a,0x9d,0x1d,0xea,0x55,0xc1,0x61,0x6b,0xfe,0x2a,0x2b,0x8f,0x0f,0xf9,0xa8,0xca,0xca,0xf7,0x03,0x74,0xfb,0x1f,0x39,0xe3,0xbe,0xf8,0x1c,0xbf,0xeb,0xef,0x17,0xb7,0x22,0x82,0x68,0xa0,0xa2,0xa2,0x9d,0x34,0x88,0xc7,0x52,0x56,0x5c,0x6c,0x96,0x5c,0xbd,0x65,0x06,0xec,0x24,0x39,0x7c,0xc8,0xa5,0xd9,0xd1,0x52,0x85,0xa8,0x7f,0x00,0x02,0x04,0x54,0x11,0x35,0x9b,0x27,0x09,0x06,0x2a,0x02,0x6e,0xa0,0xd4,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x93,0x27,0x09};

using namespace ZeroTier;

int main()
{
World world;
world.deserialize(Buffer<ZT_DEFAULT_WORLD_LENGTH>(ZT_DEFAULT_WORLD, ZT_DEFAULT_WORLD_LENGTH), 0);

for (const auto& root : world.roots()) {
char buf[ZT_IDENTITY_STRING_BUFFER_LENGTH];
std::cout << root.identity.toString(false, buf) << "\n";
for (const auto& sp : root.stableEndpoints) {
char buf2[ZT_IDENTITY_STRING_BUFFER_LENGTH];
std::cout << sp.toString(buf2) << "\n";
}
std::cout << "\n";
}
}

以上代码发布在ZeroTierOne/attic/world/read_planet.cpp at dev · cxzlw/ZeroTierOne · GitHub

运行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cafe9efeb9:0:ccdef76bc7b97ded904eabc5df09886d9c1514a610036cb9139cc214001a2958978efcec15712dd3948c6e6b3a8e893df01ff493d1f8d9806a860c5420571bf0
104.194.8.134/9993
2605:9880:200:1200:30:571:e34:51/9993

778cde7190:0:3f6681a99e5ad1895e9fba33e6212d4454e168bcec7112101bf000956ed8e92e42892cb6f2ec410881a84ab19da50e1287ba3d926c3a1f755cccf299a1207055
103.195.103.66/9993
2605:9880:400:c3:254:f2bc:a1f7:19/9993

62f865ae71:0:e2076c57de870e6288d7d5e7404408b1545efca37d67f77b87e9e54168c25d3ef1a9abf2905ea5e785c01dff23887ad4232d95c7a8fd2c27111a72bd159322dc
50.7.252.138/9993
2001:49f0:d0db:2::2/9993

cafe04eba9:0:6c6a9d1dea55c1616bfe2a2b8f0ff9a8cacaf70374fb1f39e3bef81cbfebef17b7228268a0a2a29d3488c752565c6c965cbd6506ec24397cc8a5d9d15285a87f
84.17.53.155/9993
2a02:6ea0:d405::9993/9993

三、按照上述结果修改 moon.json

大概修改成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"id": "cafe9efeb9",
"objtype": "world",
"roots": [
{
"identity": "cafe9efeb9:0:ccdef76bc7b97ded904eabc5df09886d9c1514a610036cb9139cc214001a2958978efcec15712dd3948c6e6b3a8e893df01ff493d1f8d9806a860c5420571bf0",
"stableEndpoints": ["104.194.8.134/9993", "2605:9880:200:1200:30:571:e34:51/9993"]
},
{
"identity": "778cde7190:0:3f6681a99e5ad1895e9fba33e6212d4454e168bcec7112101bf000956ed8e92e42892cb6f2ec410881a84ab19da50e1287ba3d926c3a1f755cccf299a1207055",
"stableEndpoints": ["103.195.103.66/9993", "2605:9880:400:c3:254:f2bc:a1f7:19/9993"]
},
{
"identity": "62f865ae71:0:e2076c57de870e6288d7d5e7404408b1545efca37d67f77b87e9e54168c25d3ef1a9abf2905ea5e785c01dff23887ad4232d95c7a8fd2c27111a72bd159322dc",
"stableEndpoints": ["50.7.252.138/9993", "2001:49f0:d0db:2::2/9993"]
},
{
"identity": "cafe04eba9:0:6c6a9d1dea55c1616bfe2a2b8f0ff9a8cacaf70374fb1f39e3bef81cbfebef17b7228268a0a2a29d3488c752565c6c965cbd6506ec24397cc8a5d9d15285a87f",
"stableEndpoints": ["84.17.53.155/9993", "2a02:6ea0:d405::9993/9993"]
}
],
"signingKey": "xxx",
"signingKey_SECRET": "xxx",
"updatesMustBeSignedBy": "xxx",
"worldType": "moon"
}

四、生成 .moon 文件

1
zerotier-idtool genmoon .\moon.json

五、使用 .moon 文件

在 Zerotier 目录[3]下新建文件夹 moons.d。

把生成的 xxxxxxxxxxxxxxxx.moon 放到你的 moons.d文件夹。

重启 Zerotier 服务(不会重启的建议重启电脑)。

这样就好了,你可以开始享用你的自定义 Planet 带来的低延迟体验和官方 Planet 上大量的节点了

结语

在这篇文章中,我们通过将 Zerotier 自带的 Planet 转为 Moon 来进行连接,以帮助使用自定义 Planet 的节点与官方 Planet 上的节点进行通信。这方便了我们在使用低延迟的自建 Planet 的同时与大量标准节点进行通信。

  1. 不作评价
  2. Introduction | ZeroTier Documentation如果你使用自定义根配置,你的节点将无法找到其他标准节点。
  3. Linux 是 /var/lib/zerotier-one,Windows 是 C:\ProgramData\ZeroTier\One\
]]>
diff --git a/sitemap.xml b/sitemap.xml index 95fd374..a4c41cf 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -4,7 +4,7 @@ https://blog.cxzlw.top/manifest.json - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -13,16 +13,7 @@ https://blog.cxzlw.top/2023/08/31/cell-structure/ - 2023-09-21 - - monthly - 0.6 - - - - https://blog.cxzlw.top/2023/08/22/eca-i-am-interested-in/ - - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -31,16 +22,7 @@ https://blog.cxzlw.top/2023/08/04/permission-system-design-share/ - 2023-09-21 - - monthly - 0.6 - - - - https://blog.cxzlw.top/2023/08/08/python-to-windows-service/ - - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -49,7 +31,7 @@ https://blog.cxzlw.top/2023/08/04/test-latex/ - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -58,7 +40,7 @@ https://blog.cxzlw.top/2023/07/05/trace-of-line-01/ - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -67,7 +49,7 @@ https://blog.cxzlw.top/2023/07/10/trace-of-line-02/ - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -76,7 +58,7 @@ https://blog.cxzlw.top/2023/07/06/zerotier-planet-convert/ - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -85,7 +67,7 @@ https://blog.cxzlw.top/2023/07/05/zhihu-aac-old/ - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -94,7 +76,7 @@ https://blog.cxzlw.top/about/index.html - 2023-09-21 + 2023-09-26 monthly 0.6 @@ -103,99 +85,85 @@ https://blog.cxzlw.top/ - 2023-09-21 + 2023-09-26 daily 1.0 - - https://blog.cxzlw.top/tags/%E6%9D%83%E9%99%90%E7%B3%BB%E7%BB%9F/ - 2023-09-21 - weekly - 0.2 - - https://blog.cxzlw.top/tags/Python/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/cxzlw/ - 2023-09-21 + 2023-09-26 weekly 0.2 - https://blog.cxzlw.top/tags/Windows-service/ - 2023-09-21 - weekly - 0.2 - - - - https://blog.cxzlw.top/tags/Nuitka/ - 2023-09-21 + https://blog.cxzlw.top/tags/%E6%9D%83%E9%99%90%E7%B3%BB%E7%BB%9F/ + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E9%A3%9E%E7%9F%B3/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E5%B0%8F%E8%AF%B4/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E7%A6%BB%E8%B0%B1%E7%BD%91%E6%96%87/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E8%B7%AF%E8%BF%87%E7%9A%84%E6%9F%90%E4%B8%AA%E5%AD%A6%E6%B8%A3/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/Zerotier/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E8%87%AA%E5%BB%BA-Planet/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E7%9F%A5%E4%B9%8E/ - 2023-09-21 + 2023-09-26 weekly 0.2 https://blog.cxzlw.top/tags/%E5%8F%8D%E7%88%AC/ - 2023-09-21 + 2023-09-26 weekly 0.2 diff --git a/sw.js b/sw.js index e9d8bb1..3a2580e 100644 --- a/sw.js +++ b/sw.js @@ -19,7 +19,7 @@ registerRoute(/^https:\/\/blog\.cxzlw\.top\/.*/, networkFirst, "GET"); registerRoute(/^http:\/\/localhost:8000\/.*\.html/, networkFirst, "GET"); // registerRoute(/^http:\/\/localhost:8000\/.*/, staleWhileRevalidate, "GET"); -const urls = [{"revision":"a520b14625dbd29dfec8d120e1181ad1","url":"2023/07/05/trace-of-line-01/index.html"},{"revision":"12222db016e48c0da874097affb77b1c","url":"2023/07/05/zhihu-aac-old/index.html"},{"revision":"b285dc83db3d7be330d6665d07c5842b","url":"2023/07/06/zerotier-planet-convert/index.html"},{"revision":"104ab5704ac056dbd90bc720e9396332","url":"2023/07/10/trace-of-line-02/index.html"},{"revision":"e2e1e6a0e740db13ecf037f01cec5ee1","url":"2023/08/04/permission-system-design-share/index.html"},{"revision":"7504e2a0a9e61f65ec129277faacab3a","url":"2023/08/04/test-latex/index.html"},{"revision":"5b806b517232d1ab0d65d601f66f650f","url":"2023/08/08/python-to-windows-service/index.html"},{"revision":"6d3f9a1607069ed53623326cc258005d","url":"2023/08/22/eca-i-am-interested-in/index.html"},{"revision":"e1ac52a030d6b41cf22ccd26a95ec460","url":"2023/08/31/cell-structure/index.html"},{"revision":"5012864bf26d1ca6ef8439491e2c9af6","url":"404.html"},{"revision":"d41579fd454ca41fc9d4b821463debe6","url":"about/index.html"},{"revision":"492d1e892a826bd9952da0632c597b82","url":"archives/2023/07/index.html"},{"revision":"6bcdfba0bdda8e5262778e6443a539ed","url":"archives/2023/08/index.html"},{"revision":"b5c38f5302b9832b5cecfa0d7f7a7bb6","url":"archives/2023/index.html"},{"revision":"1b4096a6b797ca7c2dd8b130dd83c865","url":"archives/index.html"},{"revision":"242837d47be8b7c244eb3b8bfc38e027","url":"baidu_verify_codeva-0rhRRODu4H.html"},{"revision":"5622aa23aa7f4d1ed62a9424d9ec66fe","url":"categories/index.html"},{"revision":"5ce280d86637a41c57fdc51fd463237a","url":"css/gitalk.css"},{"revision":"be3af4b8abf2074e66acb737867c43dc","url":"css/highlight-dark.css"},{"revision":"fdd56de5edd1e833674574fdc74bbfe7","url":"css/highlight.css"},{"revision":"7d6d29df18411568c1ae622605bc1907","url":"css/main.css"},{"revision":"71cb12d00310a7852b853744c41d9a34","url":"favicon.ico"},{"revision":"2d9aa61e592b26e2745f3c161c48c397","url":"img/avatar.png"},{"revision":"beb05a6b5b201044b6d80cacdf29f905","url":"img/default.png"},{"revision":"5603316bb5bc54a9d5cab14fddd4c510","url":"img/fluid.png"},{"revision":"4d772ced566ade339ca6718c7ed38674","url":"img/image-1.png"},{"revision":"dcfafd0cc238b0a63a733edd1a70bcfe","url":"img/image-2.png"},{"revision":"5ba9885de31a8d1e8df04a1d915b1069","url":"img/image-3.png"},{"revision":"3d2983fa8549bb6a93b7b905a6baea9c","url":"img/image-4.png"},{"revision":"55692e23130e9504505085798384e43e","url":"img/image-5.png"},{"revision":"18a13cfe951c406bbb4da3a7e7bc8ca2","url":"img/image.png"},{"revision":"15657539044e11a19a1c6c7e3073d1b3","url":"img/loading.gif"},{"revision":"b769e8dfde5660239317ed60758dba13","url":"img/police_beian.png"},{"revision":"b1f9388a6aebe4758e541850fca52da6","url":"index.html"},{"revision":"7683fab2fc9d03a3a659aa956b3a54e8","url":"js/boot.js"},{"revision":"605f587be2ab3d36472bb03ac27ede65","url":"js/color-schema.js"},{"revision":"7fa076a71a5559d89af6b0c6dfd3a0d2","url":"js/events.js"},{"revision":"fab30a410e5f490fce3f977a6936a714","url":"js/img-lazyload.js"},{"revision":"fb4a815ccdb5d851d00561dbb62251c4","url":"js/leancloud.js"},{"revision":"9dc47a0b7b6bacfd16541c9b2b5b6bc5","url":"js/local-search.js"},{"revision":"6c10bee3f659ca91b534bf4a81d62f1e","url":"js/plugins.js"},{"revision":"bc2f15d100bdd8e7ecbaf2ca670a714f","url":"js/progressbar_done.js"},{"revision":"f7ce9014de1cd7358eeb3aba81c8efe2","url":"js/utils.js"},{"revision":"46c8c37021139acd1fe28e7eac496b86","url":"links/index.html"},{"revision":"e944ba5b19e66bb908eb6871b477450b","url":"tags/cxzlw/index.html"},{"revision":"a4e8a7c74e8f493263c100e6560b1969","url":"tags/index.html"},{"revision":"35458e83f1e7e15d703d79253ad0a04e","url":"tags/Nuitka/index.html"},{"revision":"22fda76d6403486cfe3db25c01580d91","url":"tags/Python/index.html"},{"revision":"06dd81f0541ad3c9f22d551d48b68573","url":"tags/Windows-service/index.html"},{"revision":"3592f5dae386e45aba0aa7dfa8eda6b9","url":"tags/Zerotier/index.html"},{"revision":"73e61ce776c42cc01ea342ba20c760c6","url":"tags/反爬/index.html"},{"revision":"f0144c7af123078899c97deb2dbdd5dc","url":"tags/小说/index.html"},{"revision":"81e178d872a3f25e38a5405e46c7b922","url":"tags/权限系统/index.html"},{"revision":"5ddd12ded26d2b5631fcc29ff1605902","url":"tags/知乎/index.html"},{"revision":"cb56ebfcf788e9707272e85aa1915ae7","url":"tags/离谱网文/index.html"},{"revision":"655974d360e9d2d5636bdca761fabc92","url":"tags/自建-Planet/index.html"},{"revision":"0a152327fbfbf20499413a1ef68e8608","url":"tags/路过的某个学渣/index.html"},{"revision":"5bed3c2a233408a3763eae2021cf1133","url":"tags/飞石/index.html"}].map(element => element["url"]); +const urls = [{"revision":"fd6edf49e95e7261af8f94277d0a95f6","url":"2023/07/05/trace-of-line-01/index.html"},{"revision":"15451e9c7484e7b0c8b728cd8e5ae1a0","url":"2023/07/05/zhihu-aac-old/index.html"},{"revision":"dd0109dc1e45af3570dac1752f87c8a7","url":"2023/07/06/zerotier-planet-convert/index.html"},{"revision":"ab7d237ed6229a271f3e4bb012ace4cf","url":"2023/07/10/trace-of-line-02/index.html"},{"revision":"bcb59058fb8cf22da4c18d86009cfbe2","url":"2023/08/04/permission-system-design-share/index.html"},{"revision":"95a84f17443d64b678d17431612cfdf4","url":"2023/08/04/test-latex/index.html"},{"revision":"1813cd6416d6f52f254e2a6d508d50a6","url":"2023/08/31/cell-structure/index.html"},{"revision":"5012864bf26d1ca6ef8439491e2c9af6","url":"404.html"},{"revision":"a90310dfa44eb34e367f323d5c611ee4","url":"about/index.html"},{"revision":"2fe3e6581efae8e9e24bd4df34064ec0","url":"archives/2023/07/index.html"},{"revision":"b512c48b5a6a6247bfb6a7825ee1e971","url":"archives/2023/08/index.html"},{"revision":"1b6177863747118f6691e7c32830b4ba","url":"archives/2023/index.html"},{"revision":"0082863683b7debb4f39b43346d721da","url":"archives/index.html"},{"revision":"242837d47be8b7c244eb3b8bfc38e027","url":"baidu_verify_codeva-0rhRRODu4H.html"},{"revision":"5622aa23aa7f4d1ed62a9424d9ec66fe","url":"categories/index.html"},{"revision":"5ce280d86637a41c57fdc51fd463237a","url":"css/gitalk.css"},{"revision":"be3af4b8abf2074e66acb737867c43dc","url":"css/highlight-dark.css"},{"revision":"fdd56de5edd1e833674574fdc74bbfe7","url":"css/highlight.css"},{"revision":"7d6d29df18411568c1ae622605bc1907","url":"css/main.css"},{"revision":"71cb12d00310a7852b853744c41d9a34","url":"favicon.ico"},{"revision":"2d9aa61e592b26e2745f3c161c48c397","url":"img/avatar.png"},{"revision":"beb05a6b5b201044b6d80cacdf29f905","url":"img/default.png"},{"revision":"5603316bb5bc54a9d5cab14fddd4c510","url":"img/fluid.png"},{"revision":"4d772ced566ade339ca6718c7ed38674","url":"img/image-1.png"},{"revision":"dcfafd0cc238b0a63a733edd1a70bcfe","url":"img/image-2.png"},{"revision":"5ba9885de31a8d1e8df04a1d915b1069","url":"img/image-3.png"},{"revision":"3d2983fa8549bb6a93b7b905a6baea9c","url":"img/image-4.png"},{"revision":"55692e23130e9504505085798384e43e","url":"img/image-5.png"},{"revision":"18a13cfe951c406bbb4da3a7e7bc8ca2","url":"img/image.png"},{"revision":"15657539044e11a19a1c6c7e3073d1b3","url":"img/loading.gif"},{"revision":"b769e8dfde5660239317ed60758dba13","url":"img/police_beian.png"},{"revision":"e9deed8c49a006748f68fe0631d9bd0c","url":"index.html"},{"revision":"7683fab2fc9d03a3a659aa956b3a54e8","url":"js/boot.js"},{"revision":"605f587be2ab3d36472bb03ac27ede65","url":"js/color-schema.js"},{"revision":"7fa076a71a5559d89af6b0c6dfd3a0d2","url":"js/events.js"},{"revision":"fab30a410e5f490fce3f977a6936a714","url":"js/img-lazyload.js"},{"revision":"fb4a815ccdb5d851d00561dbb62251c4","url":"js/leancloud.js"},{"revision":"9dc47a0b7b6bacfd16541c9b2b5b6bc5","url":"js/local-search.js"},{"revision":"6c10bee3f659ca91b534bf4a81d62f1e","url":"js/plugins.js"},{"revision":"bc2f15d100bdd8e7ecbaf2ca670a714f","url":"js/progressbar_done.js"},{"revision":"f7ce9014de1cd7358eeb3aba81c8efe2","url":"js/utils.js"},{"revision":"46c8c37021139acd1fe28e7eac496b86","url":"links/index.html"},{"revision":"fc02c267c88bc02c67b152b274490892","url":"tags/cxzlw/index.html"},{"revision":"602e157df7edb46d5a62da059f1b2e3a","url":"tags/index.html"},{"revision":"ac3a3512658056fa9acb4791d3c6e104","url":"tags/Python/index.html"},{"revision":"3592f5dae386e45aba0aa7dfa8eda6b9","url":"tags/Zerotier/index.html"},{"revision":"73e61ce776c42cc01ea342ba20c760c6","url":"tags/反爬/index.html"},{"revision":"f0144c7af123078899c97deb2dbdd5dc","url":"tags/小说/index.html"},{"revision":"81e178d872a3f25e38a5405e46c7b922","url":"tags/权限系统/index.html"},{"revision":"5ddd12ded26d2b5631fcc29ff1605902","url":"tags/知乎/index.html"},{"revision":"cb56ebfcf788e9707272e85aa1915ae7","url":"tags/离谱网文/index.html"},{"revision":"655974d360e9d2d5636bdca761fabc92","url":"tags/自建-Planet/index.html"},{"revision":"0a152327fbfbf20499413a1ef68e8608","url":"tags/路过的某个学渣/index.html"},{"revision":"5bed3c2a233408a3763eae2021cf1133","url":"tags/飞石/index.html"}].map(element => element["url"]); warmStrategyCache({urls:urls, strategy:staleWhileRevalidate}); diff --git a/tags/Nuitka/index.html b/tags/Nuitka/index.html deleted file mode 100644 index 24ffce9..0000000 --- a/tags/Nuitka/index.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 标签 - Nuitka - 创新者.老王的博客 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - -
- -
- -
- -
-
- -
-
-
- - -
-

共计 1 篇文章

-
- - - - -

2023

- - - -
将 Python 项目打包为 Windows service
-
- -
- - - - - -
-
-
-
-
- - - - - - - - - - - - - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tags/Python/index.html b/tags/Python/index.html index 8d9cd44..3ca9a2d 100644 --- a/tags/Python/index.html +++ b/tags/Python/index.html @@ -242,7 +242,7 @@
-

共计 3 篇文章

+

共计 2 篇文章


@@ -250,12 +250,6 @@

2023

- - -
将 Python 项目打包为 Windows service
-
- -
分享一个 Python 权限系统库的设计
diff --git a/tags/Windows-service/index.html b/tags/Windows-service/index.html deleted file mode 100644 index 7f3c654..0000000 --- a/tags/Windows-service/index.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 标签 - Windows service - 创新者.老王的博客 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - -
- -
- -
- -
-
- -
-
-
- - -
-

共计 1 篇文章

-
- - - - -

2023

- - - -
将 Python 项目打包为 Windows service
-
- -
- - - - - -
-
-
-
-
- - - - - - - - - - - - - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tags/cxzlw/index.html b/tags/cxzlw/index.html index 0fb10db..8b29511 100644 --- a/tags/cxzlw/index.html +++ b/tags/cxzlw/index.html @@ -242,7 +242,7 @@