client can now set secret other than 'test'
This commit is contained in:
parent
c21b5095ee
commit
1193580403
7 changed files with 17 additions and 808 deletions
|
@ -1,4 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import string
|
||||||
|
import secrets
|
||||||
from traceback import print_exc
|
from traceback import print_exc
|
||||||
from json import load
|
from json import load
|
||||||
import logging
|
import logging
|
||||||
|
@ -17,7 +19,7 @@ sources: dict[str, Source] = {}
|
||||||
|
|
||||||
|
|
||||||
currentLock = asyncio.Semaphore(0)
|
currentLock = asyncio.Semaphore(0)
|
||||||
state = {"current": None, "queue": [], "room": None, "server": ""}
|
state = {"current": None, "queue": [], "recent": [], "room": None, "server": "", "secret": ""}
|
||||||
|
|
||||||
|
|
||||||
@sio.on("skip")
|
@sio.on("skip")
|
||||||
|
@ -29,6 +31,7 @@ async def handle_skip():
|
||||||
@sio.on("state")
|
@sio.on("state")
|
||||||
async def handle_state(data):
|
async def handle_state(data):
|
||||||
state["queue"] = [Entry(**entry) for entry in data["queue"]]
|
state["queue"] = [Entry(**entry) for entry in data["queue"]]
|
||||||
|
state["recent"] = [Entry(**entry) for entry in data["recent"]]
|
||||||
|
|
||||||
|
|
||||||
@sio.on("connect")
|
@sio.on("connect")
|
||||||
|
@ -37,8 +40,9 @@ async def handle_connect():
|
||||||
await sio.emit(
|
await sio.emit(
|
||||||
"register-client",
|
"register-client",
|
||||||
{
|
{
|
||||||
"secret": "test",
|
"secret": state["secret"],
|
||||||
"queue": [entry.to_dict() for entry in state["queue"]],
|
"queue": [entry.to_dict() for entry in state["queue"]],
|
||||||
|
"recent": [entry.to_dict() for entry in state["recent"]],
|
||||||
"room": state["room"],
|
"room": state["room"],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -109,6 +113,7 @@ async def aiomain():
|
||||||
parser = ArgumentParser()
|
parser = ArgumentParser()
|
||||||
|
|
||||||
parser.add_argument("--room", "-r")
|
parser.add_argument("--room", "-r")
|
||||||
|
parser.add_argument("--secret", "-s")
|
||||||
parser.add_argument("--config-file", "-C", default="syng-client.json")
|
parser.add_argument("--config-file", "-C", default="syng-client.json")
|
||||||
parser.add_argument("server")
|
parser.add_argument("server")
|
||||||
|
|
||||||
|
@ -120,6 +125,12 @@ async def aiomain():
|
||||||
if args.room:
|
if args.room:
|
||||||
state["room"] = args.room
|
state["room"] = args.room
|
||||||
|
|
||||||
|
if args.secret:
|
||||||
|
state["secret"] = args.secret
|
||||||
|
else:
|
||||||
|
state["secret"] = ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(8))
|
||||||
|
print(f"Generated secret: {state['secret']}")
|
||||||
|
|
||||||
state["server"] = args.server
|
state["server"] = args.server
|
||||||
|
|
||||||
await sio.connect(args.server)
|
await sio.connect(args.server)
|
||||||
|
|
|
@ -203,7 +203,8 @@ async def handle_register_client(sid, data: dict[str, Any]):
|
||||||
else:
|
else:
|
||||||
logger.info("Registerd new client %s", room)
|
logger.info("Registerd new client %s", room)
|
||||||
initial_entries = [Entry(**entry) for entry in data["queue"]]
|
initial_entries = [Entry(**entry) for entry in data["queue"]]
|
||||||
clients[room] = State(data["secret"], {}, [], Queue(initial_entries), [], sid)
|
initial_recent = [Entry(**entry) for entry in data["recent"]]
|
||||||
|
clients[room] = State(data["secret"], {}, [], Queue(initial_entries), initial_recent, sid)
|
||||||
sio.enter_room(sid, room)
|
sio.enter_room(sid, room)
|
||||||
await sio.emit("client-registered", {"success": True, "room": room}, room=sid)
|
await sio.emit("client-registered", {"success": True, "room": room}, room=sid)
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB |
|
@ -1,15 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<link rel="icon" href="/favicon.ico">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Vite App</title>
|
|
||||||
<script type="module" crossorigin src="/assets/index.533d2b73.js"></script>
|
|
||||||
<link rel="stylesheet" href="/assets/index.d713a926.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -67,9 +67,9 @@ class SyngShell(aiocmd.PromptToolkitCmd):
|
||||||
async def do_admin(self, data):
|
async def do_admin(self, data):
|
||||||
await sio.emit("register-admin", {"secret": data})
|
await sio.emit("register-admin", {"secret": data})
|
||||||
|
|
||||||
async def do_connect(self, room):
|
async def do_connect(self, server, room):
|
||||||
state["room"] = room
|
state["room"] = room
|
||||||
await sio.connect("http://127.0.0.1:8080")
|
await sio.connect(server)
|
||||||
|
|
||||||
async def do_skip(self):
|
async def do_skip(self):
|
||||||
await sio.emit("skip")
|
await sio.emit("skip")
|
||||||
|
|
Loading…
Add table
Reference in a new issue