首次提交完整的python工程代码
This commit is contained in:
287
core/link_manager.py
Normal file
287
core/link_manager.py
Normal file
@@ -0,0 +1,287 @@
|
||||
# import threading
|
||||
# from core.forward_engine import UdpForward, Tcp2UdpForward
|
||||
# from config.settings import LOCAL_PORT, REMOTE
|
||||
|
||||
# # 导入转换器
|
||||
# from converter.b_to_d import B2DConverter
|
||||
# from converter.a_to_b import A2BConverter
|
||||
# from converter.b_to_e import B2EConverter
|
||||
# from converter.a_to_c import A2CConverter
|
||||
|
||||
|
||||
# class LinkManager:
|
||||
# def __init__(self):
|
||||
# self.links = []
|
||||
|
||||
# def register_all(self):
|
||||
# # B→D
|
||||
# self.links.append(
|
||||
# Tcp2UdpForward(
|
||||
# remote_tcp_ip=REMOTE["B"]["ip"],
|
||||
# remote_tcp_port=REMOTE["B"]["port"],
|
||||
# udp_ip=REMOTE["D"]["ip"],
|
||||
# udp_port=REMOTE["D"]["port"],
|
||||
# converter=B2DConverter()
|
||||
# )
|
||||
# )
|
||||
|
||||
# # A→B
|
||||
# self.links.append(
|
||||
# UdpForward(
|
||||
# local_port=LOCAL_PORT["A_B"],
|
||||
# remote_ip=REMOTE["B"]["ip"],
|
||||
# remote_port=REMOTE["B"]["port"],
|
||||
# converter=A2BConverter()
|
||||
# )
|
||||
# )
|
||||
|
||||
# # A→C
|
||||
# self.links.append(
|
||||
# UdpForward(LOCAL_PORT["A_C"], REMOTE["C"]["ip"], REMOTE["C"]["port"], A2CConverter())
|
||||
# )
|
||||
|
||||
# # B→E
|
||||
# self.links.append(
|
||||
# UdpForward(LOCAL_PORT["B_E"], REMOTE["E"]["ip"], REMOTE["E"]["port"], B2EConverter())
|
||||
# )
|
||||
|
||||
# def start(self):
|
||||
# for link in self.links:
|
||||
# threading.Thread(target=link.loop, daemon=True).start()
|
||||
|
||||
import threading
|
||||
from core.forward_engine import UdpForward, Tcp2UdpForward
|
||||
from config.settings import LOCAL_PORT, REMOTE
|
||||
from config_loader import cfg
|
||||
|
||||
from converter.b_to_d import B2DConverter
|
||||
from converter.a_to_b import A2BConverter
|
||||
from converter.b_to_e import B2EConverter
|
||||
from converter.a_to_c import A2CConverter
|
||||
|
||||
# ==================== 新增导入 ====================
|
||||
from converter.c_to_b import C2BConverter
|
||||
from converter.c_to_a import C2AConverter
|
||||
from core.single_to_dual import SingleToDualForward
|
||||
from core.tcp_single_to_dual import TcpSingleToDualForward
|
||||
#from core.a_to_b_forward import A2BForward
|
||||
from core.a2b_forward import A2BForward
|
||||
#from core.udp_c_remote import UdpRemoteC
|
||||
from core.udp_c_remote import UdpCRemote
|
||||
from core.f_to_a_forward import FToAForward # 新增导入
|
||||
|
||||
class LinkManager:
|
||||
def __init__(self):
|
||||
self.links = []
|
||||
|
||||
def register_all(self):
|
||||
# # B→D
|
||||
# self.links.append(
|
||||
# Tcp2UdpForward(
|
||||
# remote_tcp_ip=REMOTE["B"]["ip"],
|
||||
# remote_tcp_port=REMOTE["B"]["port"],
|
||||
# udp_ip=REMOTE["D"]["ip"],
|
||||
# udp_port=REMOTE["D"]["port"],
|
||||
# converter=B2DConverter()
|
||||
# )
|
||||
# )
|
||||
# B → D(转换) + B → C(无条件转发)2026/4/2 B软件换双端TC,TM后停用
|
||||
# self.links.append(Tcp2UdpForward(
|
||||
# remote_tcp_ip=REMOTE["B"]["ip"], remote_tcp_port=REMOTE["B"]["port"],
|
||||
# udp_ip=REMOTE["D"]["ip"], udp_port=REMOTE["D"]["port"],
|
||||
# converter=B2DConverter(),
|
||||
# # 👇 新增:同时转发给 C
|
||||
# forward_c_ip=REMOTE["C"]["ip"],
|
||||
# forward_c_port=REMOTE["C"]["port"]
|
||||
# ))
|
||||
|
||||
# ========== 1. B 遥测 3078 → D + C ==========2026/4/2更新 B软件换双端TC,TM
|
||||
# self.links.append(Tcp2UdpForward(
|
||||
# b_ip=REMOTE["B"]["ip"],
|
||||
# b_telem_port=REMOTE["B"]["port_telem"], # 3078
|
||||
# udp_d_ip=REMOTE["D"]["ip"],
|
||||
# udp_d_port=REMOTE["D"]["port"],
|
||||
# converter=B2DConverter(),
|
||||
# c_ip=REMOTE["C"]["ip"],
|
||||
# c_port=REMOTE["C"]["port"]
|
||||
# ))
|
||||
self.links.append(Tcp2UdpForward(
|
||||
# 2026/4/7更新 使用config.ini配置文件
|
||||
b_ip=cfg.get("REMOTE", "B_IP"),
|
||||
b_telem_port=cfg.get_int("REMOTE", "B_TELEM_PORT"), # 3078
|
||||
udp_d_ip=cfg.get("REMOTE", "D_IP"),
|
||||
udp_d_port=cfg.get_int("REMOTE", "D_PORT"),
|
||||
converter=B2DConverter(),
|
||||
c_ip=cfg.get("REMOTE", "C_IP"),
|
||||
c_port=cfg.get_int("REMOTE", "C_PORT"),
|
||||
#2026/4/30新增G软件-数字卫星C通道遥测,遥控转发
|
||||
g_ip = cfg.get("REMOTE", "B2G_IP"),
|
||||
g_port = cfg.get_int("REMOTE", "B2G_PORT"),
|
||||
g_cmd_ip = cfg.get("REMOTE", "G_CMD_IP"),
|
||||
g_cmd_port = cfg.get_int("REMOTE", "G_CMD_PORT"),
|
||||
#2026/5/11 新增E软件,遥控转发
|
||||
e_ip = cfg.get("REMOTE", "E_IP"),
|
||||
e_port = cfg.get_int("REMOTE", "E_PORT"),
|
||||
))
|
||||
|
||||
# A→B 2026/4/2停用
|
||||
# self.links.append(
|
||||
# UdpForward(
|
||||
# local_port=LOCAL_PORT["A_B"],
|
||||
# remote_ip=REMOTE["B"]["ip"],
|
||||
# remote_port=REMOTE["B"]["port_remote"], ### 暂时是遥控接口,以后要改
|
||||
# converter=A2BConverter()
|
||||
# )
|
||||
# )
|
||||
|
||||
# A→C
|
||||
self.links.append(
|
||||
#UdpForward(LOCAL_PORT["A_C"], REMOTE["C"]["ip"], REMOTE["C"]["port"], A2CConverter())
|
||||
UdpForward(cfg.get_int("LOCAL","A_C"), cfg.get("REMOTE","C_IP"), cfg.get_int("REMOTE","C_PORT"), A2CConverter())#2026/4/7更新 使用config.ini配置文件
|
||||
)
|
||||
|
||||
# B→E
|
||||
self.links.append(
|
||||
#UdpForward(LOCAL_PORT["B_E"], REMOTE["E"]["ip"], REMOTE["E"]["port"], B2EConverter())
|
||||
UdpForward(cfg.get_int("LOCAL","B_E"),cfg.get("REMOTE","E_IP"), cfg.get_int("REMOTE","E_PORT"), B2EConverter())#2026/4/7更新 使用config.ini配置文件
|
||||
)
|
||||
|
||||
# # ==================== 新增两条链路 ====================
|
||||
# # C → B 透传
|
||||
# self.links.append(
|
||||
# UdpForward(
|
||||
# local_port=LOCAL_PORT["C_B"],
|
||||
# remote_ip=REMOTE["B"]["ip"],
|
||||
# remote_port=REMOTE["B"]["port"],
|
||||
# converter=C2BConverter()
|
||||
# )
|
||||
# )
|
||||
|
||||
# # C → A 转发
|
||||
# self.links.append(
|
||||
# UdpForward(
|
||||
# local_port=LOCAL_PORT["C_A"],
|
||||
# remote_ip=REMOTE["A"]["ip"],
|
||||
# remote_port=REMOTE["A"]["port"],
|
||||
# converter=C2AConverter()
|
||||
# )
|
||||
# )
|
||||
# ===================== 核心修改 =====================
|
||||
# # C 单端口 → 同时发给 B 和 A
|
||||
# self.links.append(SingleToDualForward(
|
||||
# local_port=LOCAL_PORT["C"],
|
||||
# # 发给 B
|
||||
# tcp_target_ip=REMOTE["B"]["ip"],
|
||||
# tcp_target_port=REMOTE["B"]["port"],
|
||||
# converter_tcp=C2BConverter(),
|
||||
# # 发给 A
|
||||
# udp_target_ip=REMOTE["A"]["ip"],
|
||||
# udp_target_port=REMOTE["A"]["port"],
|
||||
# converter_udp=C2AConverter()
|
||||
# ))
|
||||
# ===================== 【C 改为 TCP】 2026/3/31停用=====================
|
||||
# self.links.append(TcpSingleToDualForward(
|
||||
# local_port=LOCAL_PORT["C"],
|
||||
# # 转发 B
|
||||
# tcp_target_ip=REMOTE["B"]["ip"],
|
||||
# tcp_target_port=REMOTE["B"]["port"],
|
||||
# converter_tcp=C2BConverter(),
|
||||
# # 转发 A
|
||||
# udp_target_ip=REMOTE["A"]["ip"],
|
||||
# udp_target_port=REMOTE["A"]["port"],
|
||||
# converter_udp=C2AConverter()
|
||||
# ))
|
||||
|
||||
# # 在 register_all 中添加:
|
||||
# self.links.append(
|
||||
# A2BForward(
|
||||
# local_port=LOCAL_PORT["A_LISTEN"],
|
||||
# tcp_target_ip=REMOTE["B"]["ip"],
|
||||
# tcp_target_port=REMOTE["B"]["port"]
|
||||
# )
|
||||
# )
|
||||
|
||||
'''
|
||||
# 在 register_all 末尾加,A-B?
|
||||
self.links.append(
|
||||
A2BForward(
|
||||
#local_port=7100,
|
||||
local_port=LOCAL_PORT["A_B"], #2026/4/2改
|
||||
tcp_ip=REMOTE["B"]["ip"],
|
||||
#tcp_port=REMOTE["B"]["port"]
|
||||
tcp_port=REMOTE["B"]["port_remote"] ##2026/4/2暂时改为遥控接口,以后要改
|
||||
)
|
||||
)
|
||||
'''
|
||||
# A-B 2026/4/3
|
||||
self.links.append(
|
||||
A2BForward(
|
||||
#local_port=LOCAL_PORT["A_B"], #REMOTE["A"]["port"], #2026/4/3改
|
||||
local_port=cfg.get_int("LOCAL", "A_B"),
|
||||
#b_ip=REMOTE["B"]["ip"],
|
||||
b_ip=cfg.get("REMOTE", "B_IP"),#2026/4/7
|
||||
#b_udp_port=REMOTE["B"]["port_udp"] # B UDP 端口
|
||||
b_udp_port=cfg.get_int("REMOTE", "B_UDP_PORT")#2026/4/7
|
||||
)
|
||||
)
|
||||
|
||||
# ===================== C(UDP)遥控 → A + B =====================2026/4/2停用 B软件换双端TC,TM
|
||||
# self.links.append(
|
||||
# UdpRemoteC(
|
||||
# local_port=6004, # C 发指令的 UDP 目标端口
|
||||
# a_ip=REMOTE["A"]["ip"],
|
||||
# a_port=REMOTE["A"]["port"],
|
||||
# b_ip=REMOTE["B"]["ip"],
|
||||
# b_port=REMOTE["B"]["port"],
|
||||
# converter=C2AConverter() # 你原有遥控指令转换器
|
||||
# )
|
||||
# )
|
||||
|
||||
# ========== 2. C UDP 遥控 → A + B 3028 ========== 2026/4/2更新 B软件换双端TC,TM
|
||||
self.links.append(
|
||||
#UdpRemoteC(
|
||||
UdpCRemote(
|
||||
# local_udp_port=6004,
|
||||
# a_ip=REMOTE["A"]["ip"],
|
||||
# a_port=REMOTE["A"]["port"],
|
||||
# b_ip=REMOTE["B"]["ip"],
|
||||
# b_remote_port=REMOTE["B"]["port_remote"], # 3028
|
||||
|
||||
#local_udp_port=cfg.get_int("LOCAL", "C_AB"),#2026/4/7,
|
||||
local_port=cfg.get_int("LOCAL", "C_AB"),#2026/4/7,
|
||||
a_ip=cfg.get("REMOTE", "A_IP"),
|
||||
a_port=cfg.get_int("REMOTE", "A_PORT"),
|
||||
b_ip=cfg.get("REMOTE", "B_IP"),
|
||||
b_remote_port=cfg.get_int("REMOTE", "B_REMOTE_PORT"), # 3028
|
||||
b_gis_port = cfg.get_int("REMOTE","B_DICE_PORT"), # 2026/4/11新增
|
||||
converter=C2AConverter(),
|
||||
#2026/4//30新增E专项,G测控C通道软件转发
|
||||
e_ip=cfg.get("REMOTE", "E_IP"),
|
||||
e_port=cfg.get_int("REMOTE", "E_PORT"),
|
||||
g_ip=cfg.get("REMOTE", "G_CMD_IP"),
|
||||
g_port=cfg.get_int("REMOTE", "G_CMD_PORT")
|
||||
|
||||
))
|
||||
|
||||
|
||||
|
||||
# ========== F → A 转发 新增 ==========2026/4/11废弃
|
||||
# self.links.append(
|
||||
# FToAForward(
|
||||
# local_port=cfg.get_int("LOCAL", "UDP_F_LISTEN_PORT"),
|
||||
# a_ip=cfg.get("REMOTE", "A_IP"),
|
||||
# a_port=cfg.get_int("REMOTE", "A_PORT")
|
||||
# )
|
||||
# )
|
||||
self.links.append(#7786
|
||||
FToAForward(
|
||||
f_ip=cfg.get("REMOTE", "F_IP"),
|
||||
f_port=cfg.get_int("REMOTE", "F_PORT"),
|
||||
a_ip=cfg.get("REMOTE", "A_IP"),
|
||||
a_port=cfg.get_int("REMOTE", "A_FROM_B_PORT")
|
||||
)
|
||||
)
|
||||
|
||||
def start(self):
|
||||
for link in self.links:
|
||||
threading.Thread(target=link.loop, daemon=True).start()
|
||||
Reference in New Issue
Block a user