Update server.py
Browse files
server.py
CHANGED
@@ -12,6 +12,7 @@ class User:
|
|
12 |
self.username = username
|
13 |
self.websocket = websocket
|
14 |
self.status = status
|
|
|
15 |
|
16 |
def generate_party_code():
|
17 |
return ''.join([str(random.randint(0, 9)) for _ in range(6)])
|
@@ -34,38 +35,93 @@ async def party_server(websocket: WebSocket):
|
|
34 |
await websocket.accept()
|
35 |
username = None
|
36 |
party_code = None
|
|
|
37 |
user_status = None
|
38 |
|
39 |
-
await websocket.send_text("[system]:
|
40 |
data = await websocket.receive_text()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
if data.lower() == "system":
|
42 |
-
await websocket.send_text("[system]:You can't set system as your name")
|
|
|
43 |
return
|
44 |
-
username = data.lower()
|
45 |
|
46 |
-
|
|
|
47 |
|
48 |
-
|
49 |
-
action = await websocket.receive_text()
|
50 |
|
51 |
if action == "create":
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
users[username].status = "owner"
|
55 |
-
|
56 |
-
await
|
|
|
57 |
|
58 |
elif action == "join":
|
59 |
-
|
60 |
-
party_code =
|
61 |
-
|
|
|
|
|
62 |
if party_code in parties:
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
parties[party_code]['members'].add(username)
|
64 |
users[username].status = "user"
|
65 |
-
|
66 |
-
await
|
|
|
|
|
67 |
else:
|
68 |
-
await websocket.send_text("[system]:Invalid party code.")
|
|
|
69 |
|
70 |
try:
|
71 |
while True:
|
@@ -79,11 +135,11 @@ async def party_server(websocket: WebSocket):
|
|
79 |
await broadcast_message(party_code, users[username], f'[system]:{username} (Owner) has left the party. All members are being kicked out.')
|
80 |
for member in list(parties[party_code]['members']):
|
81 |
member_user = users[member]
|
82 |
-
await member_user.websocket.send_text("[system]:The owner has left, and the party is deleted.")
|
83 |
parties[party_code]['members'].remove(member)
|
84 |
del parties[party_code]
|
85 |
else:
|
86 |
-
await broadcast_message(party_code, users[username], f'[system]:{username} has left the party.')
|
87 |
del users[username]
|
88 |
|
89 |
if __name__ == "__main__":
|
|
|
12 |
self.username = username
|
13 |
self.websocket = websocket
|
14 |
self.status = status
|
15 |
+
self.device_id = None
|
16 |
|
17 |
def generate_party_code():
|
18 |
return ''.join([str(random.randint(0, 9)) for _ in range(6)])
|
|
|
35 |
await websocket.accept()
|
36 |
username = None
|
37 |
party_code = None
|
38 |
+
password = None
|
39 |
user_status = None
|
40 |
|
41 |
+
await websocket.send_text("[system]:[001]:ENTER DATA:")
|
42 |
data = await websocket.receive_text()
|
43 |
+
action = data.split("|")[0]
|
44 |
+
|
45 |
+
if not action.lower() in ["create", "join"]:
|
46 |
+
await websocket.send_text("[system]:[004]:Invalid action")
|
47 |
+
await websocket.close(1000, reason="Invalid action")
|
48 |
+
return
|
49 |
+
if action.lower() == "create":
|
50 |
+
if data.count("|") != 5:
|
51 |
+
await websocket.send_text("[system]:[004]:Invalid input data")
|
52 |
+
await websocket.close(1000, "Invalid input data")
|
53 |
+
return
|
54 |
+
else:
|
55 |
+
if data.count("|") != 3:
|
56 |
+
await websocket.send_text("[system]:[004]:Invalid input data")
|
57 |
+
await websocket.close(1000, "Invalid input data")
|
58 |
+
return
|
59 |
+
|
60 |
if data.lower() == "system":
|
61 |
+
await websocket.send_text("[system]:[004]:You can't set system as your name")
|
62 |
+
await websocket.close(1000, "You can't set system as your name")
|
63 |
return
|
|
|
64 |
|
65 |
+
username = data.split("|")[-2]
|
66 |
+
device_id = data.split("|")[-1]
|
67 |
|
68 |
+
users[username] = User(username, websocket, "user")
|
|
|
69 |
|
70 |
if action == "create":
|
71 |
+
link = data.split("|")[2]
|
72 |
+
name = data.split("|")[3]
|
73 |
+
act = data.split("|")[1]
|
74 |
+
if "[" in act:
|
75 |
+
act = act.split("[")[0].strip().lower()
|
76 |
+
if act == "private":
|
77 |
+
password = data.split("|")[1].split("[")[1].split("]")[0]
|
78 |
+
party_code = generate_party_code()
|
79 |
+
party_code = str(party_code)
|
80 |
+
parties[party_code] = {
|
81 |
+
'owner': username,
|
82 |
+
'members': {username},
|
83 |
+
'password' : password,
|
84 |
+
'title' : name,
|
85 |
+
'link' : link,
|
86 |
+
'type' : 'Private'
|
87 |
+
}
|
88 |
+
else:
|
89 |
+
party_code = generate_party_code()
|
90 |
+
parties[party_code] = {
|
91 |
+
'owner': username,
|
92 |
+
'members': {username},
|
93 |
+
'password' : None,
|
94 |
+
'title' : name,
|
95 |
+
'link' : link,
|
96 |
+
'type' : 'Public'
|
97 |
+
}
|
98 |
users[username].status = "owner"
|
99 |
+
users[username].device_id = device_id
|
100 |
+
await websocket.send_text(f"[system]:[006]:Party created! Your party code is :{party_code}.")
|
101 |
+
await broadcast_message(party_code, users[username], f'[system]::{username} has created the party.')
|
102 |
|
103 |
elif action == "join":
|
104 |
+
party_code = data.split("|")[1]
|
105 |
+
party_code = str(party_code)
|
106 |
+
if "[" in party_code:
|
107 |
+
password = party_code.split("[")[1].split("]")[0] # Get and verify the password
|
108 |
+
party_code = party_code.split("[")[0].strip()
|
109 |
if party_code in parties:
|
110 |
+
if parties.get(party_code).get('password') != None:
|
111 |
+
# Its a private party
|
112 |
+
if parties.get(party_code).get('password') != password:
|
113 |
+
await websocket.send_text(f"[system]:[004]: Invalid password")
|
114 |
+
await websocket.close(1000, "Invalid password")
|
115 |
+
return
|
116 |
parties[party_code]['members'].add(username)
|
117 |
users[username].status = "user"
|
118 |
+
users[username].device_id = device_id
|
119 |
+
await websocket.send_text(f"[system]:[006]:You have joined the party with code {party_code}.")
|
120 |
+
await websocket.send_text(f"[info]:[006]:{parties[party_code]['title']}|{parties[party_code]['link']}|{len(parties[party_code]['members'])}")
|
121 |
+
await broadcast_message(party_code, users[username], f'[system]:[006]:{username} has joined the party.')
|
122 |
else:
|
123 |
+
await websocket.send_text("[system]:[004]:Invalid party code.")
|
124 |
+
await websocket.close(code=1000, reason="Invalid party code")
|
125 |
|
126 |
try:
|
127 |
while True:
|
|
|
135 |
await broadcast_message(party_code, users[username], f'[system]:{username} (Owner) has left the party. All members are being kicked out.')
|
136 |
for member in list(parties[party_code]['members']):
|
137 |
member_user = users[member]
|
138 |
+
await member_user.websocket.send_text("[system]:[004]:The owner has left, and the party is deleted.")
|
139 |
parties[party_code]['members'].remove(member)
|
140 |
del parties[party_code]
|
141 |
else:
|
142 |
+
await broadcast_message(party_code, users[username], f'[system]:[004]:{username} has left the party.')
|
143 |
del users[username]
|
144 |
|
145 |
if __name__ == "__main__":
|