# 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))