add sending udp message on behalf of an non-supporting server
This commit is contained in:
16
secop.py
16
secop.py
@ -110,9 +110,12 @@ class UdpStream(Base):
|
||||
except socket.error: # pragma: no cover
|
||||
return None
|
||||
msg = json.loads(msg.decode('utf-8'))
|
||||
if msg['SECoP'] != 'node':
|
||||
if msg['SECoP'] == 'for_other_node':
|
||||
uri = msg['uri']
|
||||
elif msg['SECoP'] == 'node':
|
||||
uri = f"{addr[0]}:{msg['port']}"
|
||||
else:
|
||||
continue
|
||||
uri = f"{addr[0]}:{msg['port']}"
|
||||
yield SecopStream, uri, msg['equipment_id']
|
||||
|
||||
|
||||
@ -144,5 +147,14 @@ class ScanStream(UdpStream):
|
||||
self.select_dict[sock.fileno()] = self
|
||||
|
||||
|
||||
def send_fake_udp(uri, equipment_id='fake'):
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||
msg = json.dumps({
|
||||
'SECoP': 'for_other_node',
|
||||
'uri': uri,
|
||||
'equipment_id': equipment_id,
|
||||
}, ensure_ascii=False, separators=(',', ':')).encode('utf-8')
|
||||
sock.sendto(msg, ('255.255.255.255', SECOP_UDP_PORT))
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user