2023-06-19 18:03:21 -07:00
|
|
|
import asyncio
|
|
|
|
import asyncio.streams
|
|
|
|
import logging
|
|
|
|
|
|
|
|
LOGGER = logging.getLogger("server")
|
|
|
|
|
2023-06-19 18:10:47 -07:00
|
|
|
MAGIC = "e8437140-4347-48cc-a31d-dcdc944ffc16"
|
|
|
|
|
2023-06-19 18:03:21 -07:00
|
|
|
def main():
|
|
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
|
|
asyncio.run(run())
|
|
|
|
|
|
|
|
async def on_connect(reader, writer):
|
|
|
|
LOGGER.info("connected")
|
2023-06-19 18:10:47 -07:00
|
|
|
data = await reader.read(36)
|
|
|
|
magic = data.decode("UTF-8")
|
|
|
|
LOGGER.debug("Received magic '%s'", magic)
|
|
|
|
if magic != MAGIC:
|
|
|
|
writer.write("ERR1: Magic not recognized".encode("UTF-8"))
|
|
|
|
writer.close()
|
|
|
|
LOGGER.info("Bad magic, closing connection.")
|
|
|
|
return
|
|
|
|
LOGGER.debug("Magic looks good.")
|
|
|
|
|
2023-06-19 18:03:21 -07:00
|
|
|
|
|
|
|
async def run():
|
|
|
|
server = await asyncio.start_server(on_connect, host="localhost", port=9988)
|
|
|
|
async with server:
|
2023-06-19 18:10:47 -07:00
|
|
|
try:
|
|
|
|
await server.serve_forever()
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
LOGGER.info("Exiting at user request.")
|
2023-06-19 18:03:21 -07:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|