improved code
This commit is contained in:
parent
2eaa1fb847
commit
387c41db05
@ -25,6 +25,29 @@ build_docker() {
|
|||||||
docker buildx build --tag $IMAGE:$TAG --platform=$PLATFORMS --push .
|
docker buildx build --tag $IMAGE:$TAG --platform=$PLATFORMS --push .
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_release() {
|
||||||
|
branch=$(git symbolic-ref --short HEAD)
|
||||||
|
git stash
|
||||||
|
git fetch --prune --prune-tags -f
|
||||||
|
git checkout $TAG
|
||||||
|
echo -------------------------------------
|
||||||
|
git branch
|
||||||
|
echo -------------------------------------
|
||||||
|
git status
|
||||||
|
echo -------------------------------------
|
||||||
|
echo "!!PLEASE CHECK IF THIS IS RIGHT!!"
|
||||||
|
sleep 15
|
||||||
|
clear
|
||||||
|
echo Build Tag $TAG
|
||||||
|
build_docker
|
||||||
|
TAG=latest
|
||||||
|
clear
|
||||||
|
echo Build Tag $TAG
|
||||||
|
build_docker
|
||||||
|
git checkout $branch
|
||||||
|
git stash pop
|
||||||
|
}
|
||||||
|
|
||||||
while [ "$1" != "" ]; do
|
while [ "$1" != "" ]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
-t | --tag )
|
-t | --tag )
|
||||||
@ -60,20 +83,7 @@ while [ "$1" != "" ]; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ "$RELEASE" = true ]; then
|
if [ "$RELEASE" = true ]; then
|
||||||
branch=$(git symbolic-ref --short HEAD)
|
build_release
|
||||||
git fetch --prune --prune-tags -f
|
|
||||||
git checkout $TAG
|
|
||||||
echo -------------------------------------
|
|
||||||
git branch
|
|
||||||
echo -------------------------------------
|
|
||||||
git status
|
|
||||||
echo -------------------------------------
|
|
||||||
echo "!!PLEASE CHECK OF THIS IS RIGHT!!"
|
|
||||||
sleep 10
|
|
||||||
build_docker
|
|
||||||
TAG=latest
|
|
||||||
build_docker
|
|
||||||
git checkout $branch
|
|
||||||
else
|
else
|
||||||
build_docker
|
build_docker
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
# https://github.com/jholtmann/ip_discovery
|
# https://github.com/jholtmann/ip_discovery
|
||||||
|
"""Find other gateways and serve the udp socket"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import FindMyIP
|
import FindMyIP
|
||||||
@ -8,6 +9,7 @@ from logger import get_logger
|
|||||||
|
|
||||||
DEBUG = True if os.environ.get('DEBUG') is not None else False
|
DEBUG = True if os.environ.get('DEBUG') is not None else False
|
||||||
DISCOVERY_ACK = 'IP_DISCOVERY_ACK'.encode() # ACK for broadcast
|
DISCOVERY_ACK = 'IP_DISCOVERY_ACK'.encode() # ACK for broadcast
|
||||||
|
DISCOVERY_OK = 'IP_DISCOVERY_OK'.encode() # Not used yet
|
||||||
DISCOVERY_RSP_GTW = 'IP_DISCOVERY_RSP_GTW'.encode() # RSP for gateway
|
DISCOVERY_RSP_GTW = 'IP_DISCOVERY_RSP_GTW'.encode() # RSP for gateway
|
||||||
DISCOVERY_RSP_MSH = 'IP_DISCOVERY_RSP_MSH'.encode() # RSP for mesh
|
DISCOVERY_RSP_MSH = 'IP_DISCOVERY_RSP_MSH'.encode() # RSP for mesh
|
||||||
DISCOVERY_TIMEOUT = 0.5
|
DISCOVERY_TIMEOUT = 0.5
|
||||||
@ -16,39 +18,46 @@ PORT_SERVER = 9434
|
|||||||
PORT_CLIENT = 9435
|
PORT_CLIENT = 9435
|
||||||
|
|
||||||
|
|
||||||
def start_discovery_server():
|
def create_socket():
|
||||||
logger = get_logger(__name__)
|
|
||||||
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
|
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
|
||||||
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
|
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
|
||||||
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
||||||
|
return sock
|
||||||
|
|
||||||
|
|
||||||
|
def start_discovery_server():
|
||||||
|
"""Serves the UDP socket for UDP broadcast discovery"""
|
||||||
|
logger = get_logger(__name__)
|
||||||
|
sock = create_socket()
|
||||||
server_address = ('', PORT_SERVER)
|
server_address = ('', PORT_SERVER)
|
||||||
local_ip = FindMyIP.internal()
|
local_ip = FindMyIP.internal()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sock.bind(server_address)
|
sock.bind(server_address)
|
||||||
logger.info("Started discovery socket")
|
logger.info("Started discovery socket")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
data, addr = sock.recvfrom(4096)
|
data, addr = sock.recvfrom(4096)
|
||||||
logger.debug(f"Received a packet from {addr}")
|
logger.debug(f"Received a packet from {addr}")
|
||||||
logger.debug(f"{addr[0]} | {local_ip}")
|
logger.debug(f"{addr[0]} | {local_ip}")
|
||||||
logger.debug(f"{data} | {DISCOVERY_ACK}")
|
logger.debug(data)
|
||||||
|
|
||||||
|
if str(addr[0]) == str(local_ip): continue
|
||||||
|
logger.debug("IP accepted")
|
||||||
|
|
||||||
if data == DISCOVERY_ACK:
|
if data == DISCOVERY_ACK:
|
||||||
logger.debug("ACK accepted")
|
logger.debug("ACK accepted")
|
||||||
if str(addr[0]) == str(local_ip): continue
|
|
||||||
logger.debug("IP accepted")
|
|
||||||
sock.sendto(DISCOVERY_RSP_GTW, (addr[0], PORT_CLIENT))
|
sock.sendto(DISCOVERY_RSP_GTW, (addr[0], PORT_CLIENT))
|
||||||
logger.debug(f"Send ACK to {addr}")
|
logger.debug(f"Send ACK to {addr}")
|
||||||
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(err)
|
|
||||||
sock.close()
|
sock.close()
|
||||||
|
logger.error(err)
|
||||||
|
|
||||||
|
|
||||||
def start_discovery_client():
|
def start_discovery_client():
|
||||||
print("Started discovery client")
|
print("Started discovery client")
|
||||||
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
|
sock = create_socket()
|
||||||
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
|
|
||||||
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
|
||||||
sock.settimeout(SOCKET_TIMEOUT)
|
sock.settimeout(SOCKET_TIMEOUT)
|
||||||
server_address = ('255.255.255.255', PORT_SERVER)
|
server_address = ('255.255.255.255', PORT_SERVER)
|
||||||
start_time_stamp = get_unix_time()
|
start_time_stamp = get_unix_time()
|
||||||
@ -57,14 +66,16 @@ def start_discovery_client():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
sock.bind(('', PORT_CLIENT))
|
sock.bind(('', PORT_CLIENT))
|
||||||
|
|
||||||
while delta <= DISCOVERY_TIMEOUT:
|
while delta <= DISCOVERY_TIMEOUT:
|
||||||
delta = round(get_unix_time() - start_time_stamp, 2)
|
delta = round(get_unix_time() - start_time_stamp, 2)
|
||||||
sock.sendto(DISCOVERY_ACK, server_address)
|
sock.sendto(DISCOVERY_ACK, server_address)
|
||||||
data, addr = sock.recvfrom(4096)
|
data, addr = sock.recvfrom(4096)
|
||||||
|
|
||||||
|
if str(addr[0]) in discovered_devices: continue
|
||||||
if data == DISCOVERY_RSP_GTW or data == DISCOVERY_RSP_MSH:
|
if data == DISCOVERY_RSP_GTW or data == DISCOVERY_RSP_MSH:
|
||||||
if str(addr[0]) in discovered_devices: continue
|
|
||||||
print('IP: ' + str(addr[0]))
|
|
||||||
discovered_devices.append(str(addr[0]))
|
discovered_devices.append(str(addr[0]))
|
||||||
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
print(err)
|
print(err)
|
||||||
|
|
||||||
@ -1,2 +1,2 @@
|
|||||||
from find_gateways import start_discovery_server
|
from gateway_discovery import start_discovery_server
|
||||||
start_discovery_server()
|
start_discovery_server()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user