5m4ck3r commited on
Commit
f88f1f8
·
verified ·
1 Parent(s): 51e44ec

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +74 -18
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]:Enter your name to start.")
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
- users[username] = User(username, websocket, "user")
 
47
 
48
- await websocket.send_text("[system]:Would you like to create or join a party? Type 'create' or 'join'.")
49
- action = await websocket.receive_text()
50
 
51
  if action == "create":
52
- party_code = generate_party_code()
53
- parties[party_code] = {'owner': username, 'members': {username}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  users[username].status = "owner"
55
- await websocket.send_text(f"[system]:Party created! Your party code is {party_code}.")
56
- await broadcast_message(party_code, users[username], f'[system]:{username} has created the party.')
 
57
 
58
  elif action == "join":
59
- await websocket.send_text("[system]:Enter the party code to join.")
60
- party_code = await websocket.receive_text()
61
-
 
 
62
  if party_code in parties:
 
 
 
 
 
 
63
  parties[party_code]['members'].add(username)
64
  users[username].status = "user"
65
- await websocket.send_text(f"[system]:You have joined the party with code {party_code}.")
66
- await broadcast_message(party_code, users[username], f'[system]:{username} has joined the party.')
 
 
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__":