53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
|
# Description: 生成Tailscale.json文件和更新README.md文件
|
|||
|
import json
|
|||
|
import yaml
|
|||
|
import time
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
# 读取all_nodes.yaml文件
|
|||
|
with open("all_nodes.yaml", "r", encoding="utf-8") as f:
|
|||
|
nodes = yaml.load(f, Loader=yaml.FullLoader)
|
|||
|
# 将README.md文件中的节点列表替换为最新的节点信息
|
|||
|
with open("README.md", "r", encoding="utf-8") as f:
|
|||
|
readme = f.read()
|
|||
|
node_list = ""
|
|||
|
RegionID = 900
|
|||
|
for node in nodes:
|
|||
|
node['RegionID'] = RegionID
|
|||
|
node_list += f"| {node['info']} | {RegionID} | {node['ip']} | {node['port']} |\n"
|
|||
|
RegionID += 1
|
|||
|
readme = readme[:readme.find("| :-: | :-: | :-: | :-: |") + 26] + node_list
|
|||
|
|
|||
|
# 保存README.md文件
|
|||
|
with open("README.md", "w", encoding="utf-8") as f:
|
|||
|
f.write(readme)
|
|||
|
print("README.md文件已更新")
|
|||
|
# 将旧的Tailscale.json重命名为Tailscale_时间戳.json
|
|||
|
with open("./config/Tailscale.json", "r", encoding="utf-8") as f:
|
|||
|
old_json = f.read()
|
|||
|
with open(f"./config/Tailscale_{int(time.time())}.json", "w", encoding="utf-8") as f:
|
|||
|
f.write(old_json)
|
|||
|
# 生成Tailscale.json文件,格式:
|
|||
|
with open("./config/Tailscale.json", "w", encoding="utf-8") as f:
|
|||
|
f.write(json.dumps({
|
|||
|
"derpMap": {
|
|||
|
"OmitDefaultRegions": True,
|
|||
|
"Regions": {
|
|||
|
str(node["RegionID"]): {
|
|||
|
"RegionID": node["RegionID"],
|
|||
|
"RegionCode": node["info"],
|
|||
|
"Nodes": [
|
|||
|
{
|
|||
|
"Name": node["info"],
|
|||
|
"RegionID": node["RegionID"],
|
|||
|
"HostName": node["ip"],
|
|||
|
"DERPPort": node["port"],
|
|||
|
"InsecureForTests": True
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
for node in nodes
|
|||
|
}
|
|||
|
}
|
|||
|
}, ensure_ascii=False, indent=4))
|
|||
|
|