improved code

This commit is contained in:
DasMoorhuhn 2024-09-01 04:16:24 +02:00
parent 2eaa1fb847
commit 387c41db05
3 changed files with 47 additions and 26 deletions

View File

@ -25,6 +25,29 @@ build_docker() {
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
case $1 in
-t | --tag )
@ -60,20 +83,7 @@ while [ "$1" != "" ]; do
done
if [ "$RELEASE" = true ]; then
branch=$(git symbolic-ref --short HEAD)
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
build_release
else
build_docker
fi

View File

@ -1,4 +1,5 @@
# https://github.com/jholtmann/ip_discovery
"""Find other gateways and serve the udp socket"""
import os
import FindMyIP
@ -8,6 +9,7 @@ from logger import get_logger
DEBUG = True if os.environ.get('DEBUG') is not None else False
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_MSH = 'IP_DISCOVERY_RSP_MSH'.encode() # RSP for mesh
DISCOVERY_TIMEOUT = 0.5
@ -16,39 +18,46 @@ PORT_SERVER = 9434
PORT_CLIENT = 9435
def start_discovery_server():
logger = get_logger(__name__)
def create_socket():
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 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)
local_ip = FindMyIP.internal()
try:
sock.bind(server_address)
logger.info("Started discovery socket")
while True:
data, addr = sock.recvfrom(4096)
logger.debug(f"Received a packet from {addr}")
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:
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))
logger.debug(f"Send ACK to {addr}")
except Exception as err:
logger.error(err)
sock.close()
logger.error(err)
def start_discovery_client():
print("Started discovery client")
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
sock = create_socket()
sock.settimeout(SOCKET_TIMEOUT)
server_address = ('255.255.255.255', PORT_SERVER)
start_time_stamp = get_unix_time()
@ -57,14 +66,16 @@ def start_discovery_client():
try:
sock.bind(('', PORT_CLIENT))
while delta <= DISCOVERY_TIMEOUT:
delta = round(get_unix_time() - start_time_stamp, 2)
sock.sendto(DISCOVERY_ACK, server_address)
data, addr = sock.recvfrom(4096)
if str(addr[0]) in discovered_devices: continue
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]))
except Exception as err:
print(err)

View File

@ -1,2 +1,2 @@
from find_gateways import start_discovery_server
from gateway_discovery import start_discovery_server
start_discovery_server()