flix/tools/pyflix/proxy.py
2025-07-22 14:17:08 +03:00

38 lines
922 B
Python
Executable File

#!/usr/bin/env python3
"""Proxy for running pyflix library alongside QGroundControl app."""
import socket
LOCAL = ('0.0.0.0', 14550) # from Flix
TARGETS = (
('127.0.0.1', 14560), # to QGroundControl
('127.0.0.1', 14555), # to pyflix
)
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(LOCAL)
source_addr = None
packets = 0
print('Proxy started - run QGroundControl')
while True:
data, addr = sock.recvfrom(1024) # read entire UDP packet
if addr in TARGETS: # packet from target
if source_addr is None:
continue
sock.sendto(data, source_addr)
else: # packet from source
source_addr = addr
for target in TARGETS:
sock.sendto(data, target)
packets += 1
print(f'\rPackets: {packets}', end='')
if __name__ == '__main__':
main()