You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.2 KiB
86 lines
2.2 KiB
# -*- coding: utf-8 -*-
|
|
import os
|
|
import json
|
|
import shutil
|
|
import yaml # 保留导入 yaml 模块
|
|
|
|
# 新文件夹名称
|
|
new_folder_name = "config"
|
|
|
|
downloads_path = os.path.join(os.path.expanduser('~'), 'Downloads')
|
|
|
|
# 新文件夹的完整路径
|
|
new_folder_path = os.path.join(downloads_path, new_folder_name)
|
|
|
|
# 如果文件夹存在,删除整个文件夹
|
|
if os.path.exists(new_folder_path):
|
|
shutil.rmtree(new_folder_path)
|
|
|
|
# 创建新的文件夹
|
|
os.makedirs(new_folder_path)
|
|
|
|
config_path = os.path.join(os.getcwd(), "merge.yaml")
|
|
|
|
with open(config_path, 'r', encoding='utf-8') as file:
|
|
data = yaml.safe_load(file) # 使用 yaml 模块加载 YAML 文件
|
|
if not data:
|
|
print(f"Error reading {config_path}")
|
|
exit(1)
|
|
|
|
config_name_serial_start = 1
|
|
port_start = 56000
|
|
|
|
for proxy in data['proxies']:
|
|
if '剩余流量' in proxy['name']:
|
|
continue
|
|
if '套餐到期' in proxy['name']:
|
|
continue
|
|
|
|
password = 'password'
|
|
if proxy['type'] == 'vmess':
|
|
password = 'uuid'
|
|
# 构建 SingBox 配置模板
|
|
config_template = {
|
|
"log": {
|
|
"level": "info"
|
|
},
|
|
"inbounds": [
|
|
{
|
|
"type": "mixed",
|
|
"listen": "::",
|
|
"listen_port": port_start
|
|
}
|
|
],
|
|
"outbounds": [
|
|
{
|
|
"type": proxy['type'],
|
|
"tag": f'proxy_{config_name_serial_start}',
|
|
"server": proxy['server'],
|
|
"server_port": proxy['port'],
|
|
f'{password}': proxy.setdefault('uuid', proxy.setdefault('password', '')),
|
|
"tls": {
|
|
"enabled": False
|
|
}
|
|
}
|
|
],
|
|
"route": {
|
|
"rules": [
|
|
{
|
|
"type": "default",
|
|
"outbound": f'proxy_{config_name_serial_start}'
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
config_name = f"config{str(config_name_serial_start)}.json"
|
|
|
|
save_path = os.path.join(new_folder_path, config_name)
|
|
|
|
with open(save_path, 'w', encoding='utf-8') as file:
|
|
json.dump(config_template, file, ensure_ascii=False, indent=4)
|
|
|
|
config_name_serial_start += 1
|
|
port_start += 1
|
|
|
|
print("OK")
|
|
|