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