start lovespeech
This commit is contained in:
commit
9d444505ce
9 changed files with 91 additions and 0 deletions
7
LICENSE
Normal file
7
LICENSE
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Copyright (c) Alexander Mahr 2024 Berlin
|
||||||
|
|
||||||
|
This software is copyrighted and licensed ONLY subject to the following terms:
|
||||||
|
* NO-WARRANTY, you use it at your own risk, no liability taken
|
||||||
|
* NO-SOFTWARE-PATENTS, you use, hold or agree to software-patents, then you are not allowed to use this license
|
||||||
|
* NO-MEGACORPS, you are directly a megacorps (i.e. company with revenue over 1million 2024 USD) or linked to one, then you cannot use this software.
|
||||||
|
* ANY modification or redistribution of this software must feature this copyright notice and license and be subject to the same License
|
5
README.md
Normal file
5
README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# lovespeech
|
||||||
|
|
||||||
|
## license
|
||||||
|
|
||||||
|
there is a [LICENSE](./LICENSE) file
|
5
client/Dockerfile
Normal file
5
client/Dockerfile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
FROM alpine:edge
|
||||||
|
RUN apk update && apk add py3-websockets
|
||||||
|
COPY --chmod=0555 entrypoint.sh /entrypoint.sh
|
||||||
|
COPY --chmod=0555 entrypoint.py /entrypoint.py
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
20
client/entrypoint.py
Executable file
20
client/entrypoint.py
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import os
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
from websockets.asyncio.client import connect
|
||||||
|
|
||||||
|
async def test():
|
||||||
|
uri = "ws://server:1080"
|
||||||
|
async with connect(uri) as websocket:
|
||||||
|
print(f"Get username via:\n name = os.environ.get('USER')")
|
||||||
|
msg = os.environ.get('USER')
|
||||||
|
await websocket.send(msg)
|
||||||
|
print(f"SENT: {msg}")
|
||||||
|
|
||||||
|
answer = await websocket.recv()
|
||||||
|
print(f"RECVEIVED: {answer}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(test())
|
3
client/entrypoint.sh
Executable file
3
client/entrypoint.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec /entrypoint.py
|
19
compose.yml
Normal file
19
compose.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
services:
|
||||||
|
# the server
|
||||||
|
server:
|
||||||
|
stop_grace_period: 1s
|
||||||
|
environment:
|
||||||
|
PYTHONUNBUFFERED: true
|
||||||
|
build: 'server'
|
||||||
|
expose:
|
||||||
|
- 1080
|
||||||
|
# the client
|
||||||
|
client:
|
||||||
|
stop_grace_period: 1s
|
||||||
|
environment:
|
||||||
|
USER: ${USER}
|
||||||
|
build: 'client'
|
||||||
|
restart: on-failure
|
||||||
|
depends_on:
|
||||||
|
server:
|
||||||
|
condition: service_started
|
5
server/Dockerfile
Normal file
5
server/Dockerfile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
FROM alpine:edge
|
||||||
|
RUN apk update && apk add py3-websockets
|
||||||
|
COPY --chmod=0555 entrypoint.sh /entrypoint.sh
|
||||||
|
COPY --chmod=0555 entrypoint.py /entrypoint.py
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
22
server/entrypoint.py
Executable file
22
server/entrypoint.py
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
from websockets.asyncio.server import serve
|
||||||
|
|
||||||
|
async def server(websocket):
|
||||||
|
msg = await websocket.recv()
|
||||||
|
print(f"IN : {msg}")
|
||||||
|
|
||||||
|
answer = f"echoing {msg}"
|
||||||
|
|
||||||
|
await websocket.send(answer)
|
||||||
|
print(f"OUT: {answer}")
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
async with serve(server, "0.0.0.0", 1080):
|
||||||
|
await asyncio.get_running_loop().create_future()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
||||||
|
|
5
server/entrypoint.sh
Executable file
5
server/entrypoint.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test "" = "$*" || { exec "$@"; }
|
||||||
|
echo "running /entrypoint.py"
|
||||||
|
exec /entrypoint.py
|
Loading…
Add table
Reference in a new issue